给出以下代码:
class C
{
C()
{
Test<string>(A); // fine
Test((string a) => {}); // fine
Test((Action<string>)A); // fine
Test(A); // type arguments cannot be inferred from usage!
}
static void Test<T>(Action<T> a) { }
void A(string _) { }
}
编译器抱怨Test(A)无法弄清楚T是string。
对我来说,这似乎是一个非常简单的案例,并且我发誓我已经对我编写的其他通用实用程序和扩展函数进行了更为复杂的推断。我在这里想念什么?
更新1:这是在C#4.0编译器中。我在VS2010中发现了这个问题,上面的示例来自我在LINQPad 4中所做的最简单的复制。
更新2:在有效列表中添加了更多示例。
慕侠2389804
慕田峪7331174
幕布斯7119047
相关分类