Почему этот код C # не компилируется при использовании именованных параметров? - PullRequest
5 голосов
/ 22 ноября 2011

озадачен.

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 не компилируется?

(Обратите внимание, что это значительно урезанный пример, поэтому кажется, чтосинтетический. В реальном случае, с которым я сталкивался, перед именованием есть несколько параметров по умолчанию, поэтому именованный параметр является обязательным. И, очевидно, это явная спецификация вызывающей стороны для T).

1 Ответ

1 голос
/ 29 ноября 2011

Похоже на несоответствие в выводе типа делегата компилятора ... извините, я не могу предложить больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...