2012-06-07 7 views

Respuesta

13

El método Distinct no está en el HashSet<>, pero el IEnumerable<> que está implementado por el HashSet<>.

Los métodos de extensión no se pueden "omitir" de ciertos tipos. Una vez agregado a un tipo, todo ese tipo y cualquier derivado obtendrá el método de extensión.

Solo para demostrarlo, si extendió object lo ensuciaría todo si agregara el espacio de nombre relevante. Así que no van añadiendo:

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

Para aclarar 'Distinct' es un método de extensión en' 'IEnumerable , que' 'HashSet pasa a implementar. – bluevector

+0

@jonnyGold Sí, me di cuenta, acabo de editar mi respuesta antes de su comentario. Gracias por la aclaración de todos modos. –

+1

Para ser aún más preciso, 'Distinct' es un método de extensión, que extiende' IEnumerable <> 'y reside en la clase estática' System.Linq.Enumerable'. –

Cuestiones relacionadas