Jestem nowicjuszem w Stack Overflow, więc proszę, nie krępuj się! Czytam C# in Depth, ale natknąłem się na scenariusz, w który nie wierzę. Szybkie wyszukiwanie w Internecie nie zwróci również żadnych wyników.Typ wnioskowania dla argumentów typu metod ogólnych
Say I zdefiniować następujące przeciążone metody:
void AreEqual<T>(T expected, T actual)
void AreEqual(object expected, object actual)
Jeśli zadzwonię AreEqual()
bez określenia typu argumentu:
AreEqual("Hello", "Hello")
to ogólna lub nierodzajową wersja metody wywoływane? Czy metoda ogólna jest wywoływana z wywnioskowanym argumentem typu, czy też nie jest generyczna metoda wywoływana z argumentami metody, które są niejawnie rzutowane na System.Object
?
Mam nadzieję, że moje pytanie jest jasne. Z góry dziękuję za radę.
można oczywiście napisać prosty kod, aby to sprawdzić ... –
http://blogs.msdn.com/b/ericlippert/archive/2009/07/30/generics-are-not-templates.aspx –
@Mitch Wheat - prawda, ale wtedy nie musiałbym robić pierwszego postu. I przydatne dla innych, aby zobaczyć odpowiedź tutaj. – zekesteer