Me estoy acostumbrando a JS después de algunos años de programación en Node.js y me pregunto cómo podríamos evitar los bucles while en C# para agregar elementos en una matriz usando un método más "similar a un mapa" (como AddRange en C# enumerables).
Por ejemplo, si quiero una matriz de 10 elementos en JavaScript, cada uno con una propiedad que se incrementa cada vez, haría lo siguiente:
const cells = Array.from({ length:10 }, (_, i) => { 'number': i }); // gives cells = [{number: 0}, {number: 1}, ... until 9] ¿Cómo hacer eso en C# sin un ciclo while o for ?
int itemWantedCount = 10; int i = 0; while(cells.Count < itemWantedCount) { cells.Add(new MyObject(i++)); }Me gustaría encontrar un método para usar cell.AddRange en su lugar, sin uso for/while, si eso es posible.
Puede usar LINQ para el procesamiento de listas de estilo funcional en C#. Ejemplo:
// We don't need Select in this toy example, but this is where // you would put your "map" operation. var cells = Enumerable.Range(0, 10).Select(i => i).ToArray(); // prints 0123456789 foreach (var c in cells) Console.Write(c);Explicación:
Enumerable.Range(start, count) enumera nuestros números (vagamente, no pasa nada hasta la llamada a ToArray() más tarde).Select "mapa"; ya está familiarizado con eso. En su ejemplo, reemplazaría i => i con i => new MyObject(i) .ToArray() : materializa la enumeración creada con pereza. Dado que las matrices tienen un tamaño fijo en C#, una alternativa más idiomática sería ToList() .