Betrachten Sie diesen Code:
%Vor%Diese Klasse meiner Person:
%Vor% Ich rufe Get
auf und gebe den Schüler an die Methode weiter. Wie folgt:
So bekomme ich das: Generic function
. Aber wenn ich Get
wie folgt anrufe:
Ich erwarte, dass Get(Person person)
aufgerufen wird. Rufen Sie aber erneut an: Get<T>(T person)
.
Warum hat Compiler dieses Verhalten?
Ich kann Ihnen das Jon Skeet-Buch C # in Depth (zweite Ausgabe vorerst) empfehlen, eine Kapitelnummer 9.4.4. Ich habe den Text so geändert, dass er in Ihre Situation passt.
Auswahl der richtigen überladenen Methode
An dieser Stelle betrachtet der Compiler die Konvertierung von Student zu Student und von Student zu Person. Eine Umwandlung von jedem Typ in selbst ist definiert als besser als jede Umwandlung in eine andere Typ, so ist die Get (T x) mit T als Student-Methode besser als Holen Sie (Person y) für diesen bestimmten Anruf.
Es gibt ein wenig mehr Erklärung in dem Buch und ich kann Ihnen zumindest empfehlen, es gründlich zu lesen.
Tags und Links c#