class Test
{
void Main()
{
F(() => ""); // ok
F(named:() => ""); // 'T' cannot be inferred from the usage!
F<string>(() => ""); // ok
F<string>(named:() => ""); // ok
}
void F<T>(Func<T> named) { }
}
有人能告诉我为什么到F的第二次调用编译失败? (请注意,这是一个非常简化的例子,这就是为什么它看起来是合成的。在真实情况下,我遇到了,'named'之前有一些默认参数,因此命名参数是必需的,所以,显然是调用者对'T'的明确规定。)
在编译器的委托类型推断中似乎是不足的。 – Jeff
听起来很可能。如果您将该评论转换为答案,我会接受。 – scobi