public static T Get<TKey, T>(this Dictionary<TKey, T> dics, TKey key, Func<T> fetch)
{
if (dics.ContainsKey(key))
{
return dics[key];
}
else
{
T value = fetch();
dics[key] = value;
return value;
}
}
这部分代码,不是很懂,特别是红色标注部分的参数不明白,希望可以列举参数的所表达的意思。谢谢!
{
if (dics.ContainsKey(key))
{
return dics[key];
}
else
{
T value = fetch();
dics[key] = value;
return value;
}
}
这部分代码,不是很懂,特别是红色标注部分的参数不明白,希望可以列举参数的所表达的意思。谢谢!
TKey、T 这个你可以理解为占位符。
到时候你调用Get<>()的时候就你给<>里传什么类型 TKey、T 就是什么类型
比如:
Get<int,string>()
那你参数里的Tkey就是int类型而T就是string类型了
那么如果有一个字符串变量,你可以这么调用 "hello world".foo(1);
看上去foo像string的成员方法一样。
TKey、T 这个你可以理解为不指定类型。也就是这里没给这个Dictionary或者是这个get方法赋值 当你调用的时候可以先给他置顶一个类型 然后就可以按照常规的调用方式去使用它 好处是 增加了代码的复用性!
public static T Get<TKey, T>(this Dictionary<TKey, T> dics, TKey key, T defaultValue)
{
if (dics.ContainsKey(key))
{
return dics[key];
}
else
{
return defaultValue;
}
}这样不行吗?为什么要加个委托,求高人解释