刚看了老赵大哥的一篇博文。看到一个方法,有点想不明白。方法如下:
static Func<T, TResult> Wrap<T, TResult>(Func<T, TResult> func,string messgaeFormat)
{
return i =>
{
var result = func(i);
Console.WriteLine(messgaeFormat, i, result);
return result;
};
}
不明白处为 var result = func(i);这句确定了result 为TResult类型,但它返回returnresult;的是Func<T, TResult>即func(i)这个方法的委托,还有Console.WriteLine(messgaeFormat, i, result);这句result的值是func(i)算出来的值。问这是把TResult类型隐式的转化成了Func<T, TResult>了么?
return result只是你方法里的另一个方法的返回值,而外层方法的返回值是i => {xxxxxx};,是一个Func<T, TResult>类型