我有这段代码:
int pictureId=10;
string cacheKey = string.Format(ModelCacheEventConsumer.PICTURE_URL_MODEL_KEY, pictureId);
return _cacheManager.Get(cacheKey, () =>
{
var url = _pictureService.GetPictureUrl(pictureId, showDefaultPicture: false);
//little hack here. nulls aren't cacheable so set it to ""
if (url == null)
url = "";
return url;
});
这部分代码到底意味着什么:"
() =>
{"
var url =...."
这是否意味着为缓存中的每一行执行返回URL的函数?什么是返回类型 - 列表?
此语法的文档的URL?
答案 0 :(得分:4)
_cacheManager.Get()方法的第二个参数是一个匿名方法,它捕获pictureId以及其他内容。
https://msdn.microsoft.com/en-us/library/bb397687.aspx
C# Lambda expressions: Why should I use them?
要找出返回的类型,请尝试使用var关键字并创建局部变量:而不是return _cacheManager.Get()
写var x = _cacheManager.Get()
后跟return x
。然后将鼠标悬停在Visual Studio中的关键字var上。
答案 1 :(得分:1)
这部分代码究竟是什么意思
它只是通过参数传递方法。
是否意味着为缓存中的每一行执行返回URL的函数?
只有对象Get
的方法_cacheManager
的内容才能回答这个问题。
什么是返回类型 - 列表?
返回类型是字符串,因为您的变量url
是一个字符串。
答案 2 :(得分:1)
这部分代码到底意味着什么:
嗯,lambda表达式是委托的“快捷方式”,委托是对回调函数的引用(在一个非常简单的解释中)。所以这是一个函数,它将在你的Get
缓存管理器方法中调用,它希望有一个Func
委托作为第二个参数
是否意味着为缓存中的每一行执行返回URL的函数?
我认为它将对具有与cacheKey
变量值相同的键值的行执行..所以,只有一次(如果键是唯一的)
什么是返回类型 - 列表?
返回类型是字符串,因为如果GetPictureUrl
的结果为null,则返回空字符串。并且调用此方法期望在结果中也包含字符串