2012-06-07 8 views

Antwort

13

Distinct Die Methode ist nicht auf die HashSet<>, aber die IEnumerable<>, die von der HashSet<> implementiert ist.

Erweiterungsmethoden können bei bestimmten Typen nicht "weggelassen" werden. Nach dem Hinzufügen zu einem Typ erhalten alle diesen Typ und alle abgeleiteten Typen die Erweiterungsmethode.

Nur um zu demonstrieren, wenn Sie object erweitert haben, würden Sie alles einstreuen, wenn Sie den relevanten Namespace hinzugefügt haben. So Zugabe nicht gehen:

namespace System 
{ 
    public static class ObjectExtensions 
    { 
     public static void Garbage(this object foo) 
     { 
     } 
    } 
} 
+0

Um zu klären 'Distinct' ist eine Erweiterung Methode' IEnumerable ', die' HashSet 'zu implementieren geschieht. – bluevector

+0

@jonnyGold Ja, ich habe festgestellt, dass ich meine Antwort vor dem Kommentar bearbeitet habe. Danke für die Aufklärung trotzdem. –

+1

Um noch präziser zu sein, ist 'Distinct' eine Erweiterungsmethode, die 'IEnumerable <>' erweitert und sich in der statischen Klasse 'System.Linq.Enumerable' befindet. –

Verwandte Themen