¿Por qué hay un método Distinct() disponible en el HashSet cuando no pueden contener duplicados de todos modos?¿Por qué C# HashSets tiene un método Distinct()
6
A
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)
{
}
}
}
Cuestiones relacionadas
- 1. ¿por qué Enumerable.Except devuelve elementos DISTINCT?
- 2. ¿Por qué ObservableCollection no tiene un método RemoveAll?
- 3. ¿Por qué el tipo de cadena tiene un método .ToString()?
- 4. ¿Por qué XElement no tiene un método GetAttributeValue?
- 5. ¿Por qué el lenguaje Python no tiene un método writeln()?
- 6. ¿Por qué java.io.File no tiene un método close()?
- 7. ¿Por qué C no tiene paquete privado?
- 8. C#: ¿Por qué LinkedList no tiene un método RemoveAll que toma un predicado?
- 9. ¿Por qué LINQ no incluye una palabra clave `distinct`?
- 10. ¿por qué hibernate hql distinct causa un sql distinct en left join?
- 11. ¿Por qué la clase python datetime tiene un método 'fromtimestamp', pero no un método 'totimestamp'? clase
- 12. Excepto que tiene un efecto similar a Distinct?
- 13. ¿Por qué "SELECT DISTINCT a, b FROM ..." devuelve menos registros que "SELECT DISTINCT A + '|' + B DE ... "?
- 14. ¿Por qué no hay un método Convert.toFloat()?
- 15. ¿Comparar dos hashsets?
- 16. ¿Por qué StringBuilder no tiene el método IndexOf?
- 17. ¿Por qué el iterador no tiene ningún método de reinicio?
- 18. ¿Por qué C# no tiene bibliotecas estáticas de estilo C++?
- 19. por qué .ToList(). Distinct() arroja el error pero no el .Distinct(). ToList() con la consulta linq
- 20. ¿Por qué boost no tiene un make_scoped()?
- 21. ¿Cómo se clasifica el método LINQ .distinct?
- 22. IEnumerable no tiene un método Count
- 23. ¿Cómo se determina si dos HashSets son iguales (por valor, no por referencia)?
- 24. ¿Por qué MongoDB tiene colecciones
- 25. ¿Por qué Ruby tiene Numeric.new?
- 26. ¿Qué aspecto tiene un método estático de Java en Ruby?
- 27. ¿Por qué ReadProcessMemory tiene `lpNumberOfBytesRead`?
- 28. C++: ¿por qué bool tiene 8 bits de largo?
- 29. ¿Por qué String.length() es un método?
- 30. ¿Por qué la matriz C# no tiene propiedad Count?
Para aclarar 'Distinct' es un método de extensión en' 'IEnumerable, que' 'HashSet pasa a implementar. –
bluevector
@jonnyGold Sí, me di cuenta, acabo de editar mi respuesta antes de su comentario. Gracias por la aclaración de todos modos. –
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'. –