Baffled.Dlaczego ten kod C# nie kompiluje się podczas używania nazwanych parametrów?
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) { }
}
Czy ktoś może mi powiedzieć, dlaczego nie udało się skompilować drugiego połączenia z F?
(Zwróć uwagę, że jest to znacznie uproszczony przykład, dlatego wydaje się być syntetyczny, ale w prawdziwym przypadku napotkałem kilka domyślnych parametrów przed "nazwanym", więc wymagany jest nazwany parametr. najwyraźniej jest wyraźna specyfikacja "T" przez dzwoniącego.)
wydaje się być niewystarczające w kompilator typ delegata wnioskowania. – Jeff
Dźwięk prawdopodobnie. A jeśli umieścisz ten komentarz w odpowiedzi, zaakceptuję go. – scobi