2008-12-09 6 views
10

¿Existe un contenedor genérico que implemente el comportamiento 'set' en .NET?.NET Generic Set?

sé que sólo podía utilizar un Dictionary<T, Object> (y posiblemente añadir nulls como valores), debido a que sus teclas actúan como un conjunto, pero tenía curiosidad por si hay algo ya hecho.

+0

Que yo sepa, en Java, HashSet se implementa con HashMap <=> Diccionario (con nulo en valores), pero en .NET, HashSet no utiliza ninguna colección. Es una implementación "básica". –

Respuesta

19

HashSet<T> en .NET 3.5

+1

¡MIRAR! http://msdn.microsoft.com/en-us/library/bb359438.aspx – longda

3

utilizo el Iesi.Collections. espacio de nombres que viene con NHibernate (docs here) - tal vez vale la pena considerar si usted está en .NET 3.5 <

1

Introducido en .NET 3.5: HashSet<T> (véase más adelante).

Introducido en .NET 4.0: ISet<T>:

proporciona la interfaz de base a la producción de conjuntos. Esta interfaz proporciona métodos para implementar conjuntos, que son colecciones que tienen elementos únicos y operaciones específicas.

La interfaz tiene dos implementaciones en el .NET 4+ BCL:

  • HashSet<T>:

    ... proporciona operaciones de conjuntos de alto rendimiento. Un conjunto es una colección que no contiene elementos duplicados, y cuyos elementos son en ningún orden en particular,

  • SortedSet<T>:

    representa una colección de objetos que se mantiene en orden clasificado. Un SortedSet (Of T) mantiene un orden ordenado cuando los elementos se insertan y se eliminan sin afectar el rendimiento. Los elementos duplicados no son permitidos.

Fwiw: También hay un internalclass TreeSet<T>: SortedSet<T> bajo el espacio de nombres System.Collections.Generic.
Su único propósito parece ser el uso en la implementación de SortedDictionary<TKey, TValue>.