为什么在使用命名参数时这个C#代码不能编译?

sco*_*obi 5 c#-4.0

百思不得其解.

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) { }
}
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么对F的第二次调用无法编译?

(请注意,这是一个非常简单的示例,这就是为什么它似乎是合成的.在我遇到的实际情况中,在'named'之前有一些默认参数,因此命名参数是必需的.所以,显然是显式规范调用者的'T'.)

Jef*_*eff 1

编译器的委托类型推断似乎存在不足...抱歉,我无法提供更多信息。