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?
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:
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.
Tags und Links c# collections