ArrayList vs List

StackOverflow https://stackoverflow.com/questions/391088

  •  23-08-2019
  •  | 
  •  

Pregunta

vi esta respuesta de Jon en inicializar el objeto genérico con desconocidos tipo :

  

Si desea una sola colección de   contener múltiples tipos no relacionados de   valores, sin embargo, se tendrán que utilizar   List<object>

No estoy comparando ArrayList vs List<>, pero ArrayList vs List<object>, ya que tanto estará exponiendo elementos de tipo object. ¿Cuál sería el beneficio de usar cualquiera de los dos en este caso?

EDIT: No es ninguna preocupación por la seguridad de tipos aquí, ya que tanto la clase está exponiendo object como su elemento. Todavía se necesita para echar a object al tipo deseado. Estoy más interesado en que no sea la seguridad de tipos nada.

EDIT: Gracias Marc Gravell y Sean por la respuesta. En este momento, sólo puedo elegir 1 como respuesta, así que voy a votar ambos.

¿Fue útil?

Solución

Usted será capaz de utilizar los métodos de extensión de LINQ directamente con List<object>, pero no con ArrayList, a menos que se inyecte un Cast<object>() / OfType<object> (gracias a IEnumerable<object> vs IEnumerable). Que vale la pena un poco, incluso si usted no necesita la seguridad de tipos, etc.

La velocidad será aproximadamente la misma; estructuras seguirán en cajas, etc - así que no hay mucho más para distinguirlos. Salvo que tiendo a ver ArrayList como "vaya, alguien está escribiendo el código heredado de nuevo ..." -P

Otros consejos

Una gran ventaja de utilizar List<object> es que estos días la mayoría del código está escrito para utilizar las clases genéricas / interfaces. Sospecho que en estos días la mayoría de la gente escribir un método que toma un IList<object> en lugar de un IList. Desde ArrayList no implementa IList<object> que no sería capaz de utilizar una lista de arreglo en estos escenarios.

tiendo a pensar en los no genéricos clases / interfaces como código heredado y evitar siempre que sea posible.

En este caso, ArrayList vs List<Object> entonces usted no notará ninguna diferencia en la velocidad. Puede haber algunas diferencias en los métodos actuales disponibles en cada una de ellas, en particular en .NET 3.5 y contando los métodos de extensión, pero que tiene más que ver con ArrayList siendo algo obsoleta que cualquier otra cosa.

Sí, además de ser typesafe, colecciones genéricas podrían ser realmente más rápido.

Desde el MSDN ( http://msdn.microsoft. com / es-es / library / system.collections.generic.aspx)

  

La System.Collections.Generic   espacio de nombres contiene interfaces y   clases que definen genérica   colecciones, que permiten a los usuarios   crear colecciones con establecimiento inflexible que   proporcionar una mejor seguridad de tipos y   rendimiento que no genérico fuertemente   colecciones con tipo.

Hacer una evaluación comparativa y usted sabrá lo que funciona mejor. Me guestimate que la diferencia es muy pequeña.

List <> es una versión de seguridad de tipos de ArrayList. Se garantizará que obtendrá el mismo tipo de objeto en la colección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top