class ReturnTypeInference
{
delegate T MyFunc<T>(); //声明了 .NET2.0 中没有的Func<T>
static void WriteResult<T>(MyFunc<T> function)
{//声明带有委托参数的泛型方法
Console.WriteLine(function());//执行匿名方法
}
static void Main() //推断匿名方法的返回类型
{
WriteResult(delegate { return 5; }); //要求对T进行类型推倒
//执行WriteResult方法
}
}
希望编译器能像对非委托类型所做的那样,执行相同的类型判断,也就是根据
返回的表达式的类型来推断T的类型。 那正是C#3为匿名方法和Lambda表达式
所做的事情---但其中存在一个陷阱。虽然在许多情况下都只涉及一个return语句,
但有时会有多个。
输出
5