Pregunta

¿Cuál es la diferencia entre el Agregar rango y Concat funciones en una lista genérica?¿Se recomienda uno sobre el otro?

¿Fue útil?

Solución

Tienen una semántica totalmente diferente.

AddRange modifica la lista agregándole otros elementos.

Concat devuelve una nueva secuencia que contiene la lista y los demás elementos, sin modificar la lista.

Elija el que tenga la semántica que desee.

Otros consejos

La gran diferencia es que AddRange muta la lista contra la cual se llama, mientras que Concat crea una nueva Lista.De ahí que tengan diferentes usos.

Además, Concat es un método de extensión que se aplica a cualquier IEnumerable y devuelve un IEnumerable; necesita .ToList() para dar como resultado una nueva Lista.

Si desea ampliar el contenido de una lista existente, utilice AddRange.

Si está creando una nueva lista a partir de dos fuentes IEnumerable, utilice Concat con .ToList.Este tiene la cualidad de que no muta ninguna de las fuentes.

Si solo necesita enumerar el contenido de dos Listas (o cualquier otro IEnumerable), simplemente use Concat cada vez, esto tiene la ventaja de no asignar nueva memoria para contener la lista unificada.

Encontré este interesante artículo hablando sobre la diferencia entre estas 2 estructuras y comparando su rendimiento...

La idea principal es que AddRange es mucho más rápido cuando se trata de colecciones de gran tamaño.

Aquí está el Enlace

Espero que esto ayude,

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