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");
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,泛型方法接收lambda表达式作为参数(genMet(() => "Works");),并且从此lambda表达式方法能够推断出参数类型.
为什么方法也不能在下一个示例中推断出参数类型,而不是lambda表达式,我们将委托实例作为参数传递:
genMet(new GenDel(() => "Doesn't work")); // Error: Using the generic type 'GenDel<T>'
// requires 1 type arguments
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |