Generische Methode in c # aufrufen [duplizieren]

8

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:

%Vor%

So bekomme ich das: Generic function . Aber wenn ich Get wie folgt anrufe:

%Vor%

Ich erwarte, dass Get(Person person) aufgerufen wird. Rufen Sie aber erneut an: Get<T>(T person) . Warum hat Compiler dieses Verhalten?

    
Mohammad Zargarani 22.09.2013, 08:58
quelle

1 Antwort

13

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.

    
Ondrej Janacek 22.09.2013, 09:30
quelle

Tags und Links