2010-12-16 8 views
7

que tengo en mi códigomanera de llenar la lista <> con elementos

List<BookedReelsState> retVal = new List<BookedReelsState>(somesize); 

ajuste más adelante en el código si algunas obras de condiciones que necesitan para llenar toda la lista con mismo valor.

Por supuesto que puedo hacerlo a través de foreach lazo y establecer valores, ¿Hay alguna forma más elegante de hacerlo? Solo para aprender algo nuevo aquí.

+0

'AddRange' tal vez? – leppie

Respuesta

18
retVal.AddRange(Enumerable.Repeat(value, somesize)); 
0

Si tiene un IEnumerable, puede usar List.AddRange.

Ejemplo:

var list = new List<BookedReelsState>(20); 

var someEnumerable = new [] 
{ 
    new BookedReelsState(1), 
    new BookedReelsState(2), 
    new BookedReelsState(2) 
}; 

list.AddRange(someEnumerable); 
2

dos cosas aquí.

En primer lugar List<T>(int capacity) no crea una Lista con capacity elementos en este. Simplemente reserva memoria para ellos. Por lo que la lista en el ejemplo anterior tendrá su longitud es igual a 0.

Pero si usted tiene una lista y desea establecer cada elemento de la misma, puede hacerlo de esta manera:

retVal.ForEach(rv => rv = desiredValue); 

Dónde desiredValue es el valor que desea establecer para cada elemento.

También me parece extraño que quiera completar cada elemento de una lista con el mismo valor. Si todos los elementos son iguales, la lista no sirve para nada, pero supongo que es posible que tenga que rellenar algunos valores predeterminados por adelantado y luego cambiar algunos de ellos más adelante.

5
retVal.ForEach(b => b.changedProp = newValue); 
Cuestiones relacionadas