public delegate T GenDel<T>();
class Program
{
public static void genMet<T>(GenDel<T> d) { }
static void Main(string[] args)
{
genMet(new GenDel<string>(() => "Works"));
genMet(() => "Works");
}
}
在上面的示例中,泛型方法接收 lambda 表达式作为参数(genMet(() => "Works");
),并且从这个 lambda 表达式方法能够推断参数类型。
在下一个示例中,为什么方法也不能推断参数类型,我们传递委托(delegate)实例作为参数而不是 lambda 表达式:
genMet(new GenDel(() => "Doesn't work")); // Error: Using the generic type 'GenDel<T>'
// requires 1 type arguments
最佳答案
类型推断仅适用于泛型方法,不适用于泛型类型或其构造函数。
关于c# - 为什么泛型方法不能推断参数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13806817/