【发布时间】:2010-09-29 07:25:21
【问题描述】:
我想知道为什么当 C# 3.0 编译器可以为同一方法隐式创建委托时,当它作为参数传递给泛型函数时,它无法推断方法的类型。
这是一个例子:
class Test
{
static void foo(int x) { }
static void bar<T>(Action<T> f) { }
static void test()
{
Action<int> f = foo; // I can do this
bar(f); // and then do this
bar(foo); // but this does not work
}
}
我原以为我可以将foo 传递给bar 并让编译器从所传递函数的签名中推断Action<T> 的类型,但这不起作用。但是,我可以从 foo 创建一个 Action<int> 而无需强制转换,那么编译器是否有正当理由不能通过类型推断也做同样的事情?
【问题讨论】:
标签: c# generics delegates c#-3.0 type-inference