¿Por qué tener HashSet pero no Establecer en C #?

Vieja pregunta

Mi entendimiento es que C # tiene en algún sentidoHashSet yset tipos Entiendo queHashSet es. Pero por quéset es una palabra separada? ¿Por qué no cada conjunto esHashSet<Object>?

Nueva pregunta

¿Por qué C # no tiene genérico?Set tipo, similar aDictionary ¿tipo? Desde mi punto de vista, me gustaría tener un conjunto con un rendimiento de búsqueda / adición / eliminación estándar. No me importaría mucho si se realiza con hashes o algo más. Entonces, ¿por qué no hacer una clase establecida que realmente se implementaría como unHashSet ¿En esta versión de C # pero quizás algo diferente en una versión futura?

O ¿por qué no al menos la interfazISet?

Responder

Aprendí gracias a todos los que respondieron a continuación:ICollection implementa mucho de lo que esperarías deISet. Desde mi punto de vista, sin embargo,ICollection implementosIEnumerable mientras que los conjuntos no tienen que ser enumerables --- ejemplo: conjunto de números reales entre 1 y 2 (aún más, los conjuntos se pueden generar dinámicamente). Estoy de acuerdo en que esto es una perorata menor, ya que los 'programadores normales' rara vez necesitan conjuntos incontables.

Ok, creo que lo entiendo.HashSet fue absolutamente destinado a ser llamadoSet pero la palabraSet Está reservado en algún sentido. Más específicamente, los creadores de la arquitectura .NET querían tener un conjunto consistente (sic!) De clases para diferentes idiomas. Esto significa que cada nombre de la clase estándar no debe coincidir con ninguna palabra clave en los idiomas .NET. La palabraSetSin embargo, se utiliza en VB.NET, que en realidad no distingue entre mayúsculas y minúsculas (¿verdad?), por lo que desafortunadamente no hay espacio para maniobrar allí.

Misterio resuelto :)

Epílogo

La nueva respuesta de Alex Y. enlaza con elPágina de MSDN que describe la próxima interfaz .NET 4.0ISet que se comporta bastante como lo pensé y se implementa porHashedSet. Final feliz.

Respuestas a la pregunta(7)

Su respuesta a la pregunta