束手无策。
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'。)
答案 0 :(得分:1)
似乎编译器的委托类型推断不足......抱歉,我无法提供更多。