озадачен.
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).