una propiedades objeto metodos lista instanciar inicializar hacer declarar crear como clases clase c# .net

propiedades - instanciar una clase c#



¿Clase.NET recomendada para una colección de enteros únicos? (4)

¿Qué recomendarías para la clase que necesita mantener una lista de enteros únicos?

Voy a querer agregar () enteros a la colección y también verificar la existencia, por ejemplo, Contiene ().

Sería bueno tenerlos también en una lista como una cadena para mostrar, es decir. "1, 5, 10, 21".


En mis pruebas, he encontrado que un diccionario con un valor ficticio es más rápido que un HashSet, cuando se trata de conjuntos de datos muy grandes (más de 100.000 en mi caso). Espero que esto se deba a que el Diccionario te permite establecer una capacidad inicial, pero realmente no lo sé. En el caso que está describiendo, probablemente usaría el Diccionario si esperaba un gran conjunto de números, y luego (o como estaba agregando al Diccionario, dependiendo de la intención) iterar sobre él usando un generador de cadenas, para crear la cadena de salida.


Si no puede usar .NET 3.5, entonces no puede usar HashSet. Si ese es el caso, es fácil hacer la suya propia según la estructura del Diccionario.

public class Set<T> { private class Unit { ... no behavior } private Dictionary<T, Unit> d; .... }

La unidad está destinada a ser un tipo con exactamente un valor. No importa a qué elementos del mapa, solo use las teclas para saber qué hay en su conjunto. Las operaciones que solicitó en la pregunta son sencillas de implementar.


podrías heredar una clase de KeyedCollection. De esta manera, su clave puede ser el valor en sí mismo, puede anular ToString para que obtenga el resultado deseado. Esto podría darle el comportamiento que desea / necesita.

Tenga en cuenta que esta respuesta fue para el marco 2.0 parte de la Q


HashSet :

La HashSet<T> proporciona operaciones de conjunto de alto rendimiento. Un conjunto es una colección que no contiene elementos duplicados, y cuyos elementos no están en ningún orden particular ...

La capacidad de un objeto HashSet<T> es la cantidad de elementos que el objeto puede contener. La capacidad de un objeto HashSet<T> aumenta automáticamente a medida que se agregan elementos al objeto.

La HashSet<T> se basa en el modelo de conjuntos matemáticos y proporciona operaciones de conjunto de alto rendimiento similares al acceso a las claves de las Dictionary<TKey, TValue> o Hashtable . En términos simples, la HashSet<T> se puede considerar como una colección Dictionary<TKey, TValue> sin valores.

Una HashSet<T> no está ordenada y no puede contener elementos duplicados ...