Wie hat ISet zwei Add (T item) -Methoden, die nur nach Rückgabetyp variieren?

8

Ich weiß, dass ich einen Rückgabetyp nicht überlasten kann (ich denke, ich weiß das).

%Vor%

.. erzeugt Fehler already defines a member called 'F' with the same parameter types

Ich lese jedoch die Dokumentation für ISet von MSDN , und ich denke, ich sehe die zwei Add-Methoden, die nur nach Rückgabetyp variieren.

Was ist hier los?

    
Aaron Anodide 10.02.2012, 00:53
quelle

3 Antworten

4

Die erste "Add" -Methode ist tatsächlich ICollection<T>.Add , die vererbt wird.

Wenn dies in einer Klasse implementiert wird, muss mindestens eine der beiden Add -Methoden explizit implementiert werden, dh:

%Vor%     
Reed Copsey 10.02.2012, 00:56
quelle
4

Die andere Methode Add ist eine explizit implementierte Schnittstellenmethode .

Wenn eine Schnittstellenmethode explizit implementiert wird, kann sie nicht aufgerufen werden, ohne zuerst die Referenz auf den Schnittstellentyp zu schreiben, wodurch Aufrufe eindeutig sind und daher mehrere Methoden mit der gleichen Signatur in Ordnung sind.

Um dies in Ihrem Code zu tun, würden Sie zum Beispiel

tun %Vor%

Dadurch vermeiden Sie alternative Methodennamen, um Kollisionen mit Schnittstellennamen zu vermeiden, wenn Sie möchten, dass die Schnittstellenmethode etwas anders als die andere Methode vorgeht.

    
Matti Virkkunen 10.02.2012 00:56
quelle
3

Schnittstellenmethoden können wie folgt explizit implementiert werden:

%Vor%

Nun ist die Methode, die void zurückgibt, nur zugänglich, wenn Sie die Klasse auf die Schnittstelle anwenden:

%Vor%     
Femaref 10.02.2012 00:56
quelle

Tags und Links