2012-06-07 6 views

risposta

13

Il metodo Distinct non è nello HashSet<>, ma lo IEnumerable<> implementato dallo HashSet<>.

I metodi di estensione non possono essere "omessi" da determinati tipi. Una volta aggiunto a un tipo, tutto il tipo e tutti i derivati ​​avranno il metodo di estensione.

Solo per dimostrare, se hai esteso object rifiuti tutto se hai aggiunto lo spazio dei nomi rilevante. Quindi non andare aggiungendo:

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

Per chiarire 'Distinct' è un metodo di estensione su' 'IEnumerable , che' 'HashSet accade da implementare. – bluevector

+0

@jonnyGold Sì, ho capito, ho appena modificato la mia risposta prima del tuo commento. Grazie per il chiarimento comunque. –

+1

Per essere ancora più preciso, 'Distinct' è un metodo di estensione, che estende' IEnumerable <> 'e risiede nella classe statica' System.Linq.Enumerable'. –

Problemi correlati