objetos manejo listas ejemplos bidimensionales arreglos array c# .net performance collections

manejo - arreglos en c# pdf



¿Cuál es mejor usar array o List<>? (8)

Esta pregunta ya tiene una respuesta aquí:

Me preguntaba qué tipo tendría mejor rendimiento y cuál cree que debería usarse.

Por ejemplo, tengo una lista de cadenas que no saben cuántos elementos necesitaré, por lo que tener la función .Add (Cadena) es realmente conveniente. Puedo agregar nuevas cadenas a la lista en cualquier momento fácilmente.

¿Cuáles son las ventajas / desventajas de usar cada uno?

¿Son las listas las nuevas matrices?


Depende del escenario de uso, PERO también es una microoptimización hasta que haya identificado un cuello de botella al perfilar. Use lo que mejor se ajuste al uso.


En la mayoría de los escenarios, la diferencia de rendimiento no es apreciable, así que usaría List<string> ya que proporciona mucha más funcionalidad que podría ser útil en diferentes situaciones.


Por supuesto, depende de su aplicación, pero en circunstancias, es preferible la List<string> (o incluso solo IEnumerable<string> .


Se requiere más contexto para responder la pregunta correctamente:

En una API pública , debe tratar de usar tipos de recopilación abstractos, de modo que pueda cambiar la implementación interna más adelante si lo necesita.

  • Si el mundo exterior no cambia la colección, use IEnumerable<T> .
  • Si el mundo exterior cambiará la colección, use ICollection<T> .
  • Si se requiere acceso indexado, use IList<T> .

En una implementación privada , no es tan importante utilizar los tipos abstractos:

  • Si necesita acceso indexado y conoce el tamaño final, use T[] o List<T> .
  • Si necesita acceso indexado y no conoce el tamaño final, use List<T> .
  • Si planea acceder a los elementos en un patrón LIFO, use Stack<T> .
  • Si planea acceder a elementos en un patrón FIFO, use Queue<T> .
  • Si necesita acceder a los elementos al principio y al final de la lista, pero no en el medio, use LinkedList<T> .
  • Si no quiere duplicados, use HashSet<T> .

En .NET 4.0 tienes algunas opciones más, pero esas son las bases.


Si necesita un tamaño dinámico, vaya con List<string> .

Si está preocupado por el rendimiento, sugeriría comenzar con List<string> y ver si realmente hay un problema. Utiliza matrices internamente, por lo que creo que, en su mayor parte, no debería haber problemas de rendimiento.

Si tiene una colección de tamaño estático, aún podría usar la string[] .


Si no sabe el tamaño de los elementos que se agregarán, vaya siempre a la List<string> que a la matriz de cadenas.


Use Lista <> en la mayoría de los casos, y no se preocupe por el rendimiento. Existe una buena posibilidad de que pase por toda su carrera y nunca necesite una melodía de rendimiento al convertir una Lista <> en una matriz.


List<String> se implementa usando una String[] .

Si no sabe cuántos elementos tendrá, use List<String>

Puede dar el número estimado (o máximo) de elementos que espera en el parámetro del constructor de capacidad ( new List<String>(10) ), que será el tamaño inicial de la matriz subyacente.

Cuando Add() un elemento y no hay espacio para este elemento, la matriz subyacente se copia en una nueva matriz del doble de tamaño.

Qué hago: cuando conozco el tamaño exacto de la colección y sé que no cambiaré el tamaño de la colección, uso una matriz ( String[] ). De lo contrario, uso una List<String> .

Por cierto, esto se aplica a cualquier tipo y no solo a String .