2010-08-08 17 views
7

Aquí es mi estrategia para la elección de qué tipo C# colección de empleo:¿Qué falta en esta estrategia de elegir qué colección de C# usar?

  • si se fija el número de elementos en la colección, a continuación, utilizar un gama, por ejemplo:

    string [] direcciones = nueva cadena [] { "norte sur este Oeste" };

  • lo contrario utilice siempre List<T>

  • menos por supuesto que necesita una colección más especializado, por ejemplo, Stack<T>, Queue<T>, or Dictionary<TKey, TValue>

  • pero nunca usar ArrayList más

En base a su experiencia, lo que falta en esta estrategia?

+0

¿No estoy seguro de por qué esto es wiki de la comunidad? –

+0

Pensé que era buena etiqueta marcar las preguntas de opinión como wiki de la comunidad. Realmente no hay una respuesta específica a esta pregunta, solo quiero poner mi estrategia y ver basada en la experiencia de los demás, si falta algo que deba saber. –

+0

Mi opinión es que si hay respuestas incorrectas demostrables, no pertenecen a la wiki de la comunidad. –

Respuesta

5

Yo diría que en la mayoría de los casos, incluso si supiera el número de elementos en una colección, usaría List, simplemente por el número de funciones de utilidad que proporciona y la compatibilidad con LINQ.

Los Hashmaps son un caso de uso importante, cuando desea un acceso más rápido a los elementos de la colección.

7

Sus reglas funcionan bien.

Además:

  • perfer Siempre colecciones genéricas (o especializados) sobre (object basados ​​en los ungeneric).
  • Utilice HashSet<T> si desea comprobar la mera existencia en lugar de correlaciones de valores-clave (que se representa mediante Dictionary).
  • En el caso de los diccionarios, tenga en cuenta el uso de mapas ordenados (SortedList<...>, SortedDictionary<...>) si el pedido parece importante.
  • Use las listas vinculadas si tiene operaciones de quitar/insertar en el medio.

y por supuesto la más importante:

  • Nunca exportar tipos de colecciones concretas: Siempre use la interfaz más general, que es - en la mayoría de los casos - IList<T> o IEnumerable<T>.
1

También puede usar Collection<T> si planea anular los métodos de agregar/quitar/borrar en una clase heredada porque hay métodos virtuales.

Cuestiones relacionadas