Bueno, esto podría hacer trampa, ya que simplemente se mueve el código de bucle para un método de extensión, pero sí permite inicializar la matriz 2D a una sola valor simplemente, y de una manera similar a cómo puede inicializar una matriz 1D a un solo valor.
En primer lugar, como se ha mencionado Jon Skeet, se podía limpiar su ejemplo de inicializar una matriz 1D así:
int [] numbers = Enumerable.Repeat(1,20).ToArray();
Con mi método de extensión, usted será capaz de inicializar una matriz 2D como esto:
public static T[,] To2DArray<T>(this IEnumerable<T> items, int rows, int columns)
{
var matrix = new T[rows, columns];
int row = 0;
int column = 0;
foreach (T item in items)
{
matrix[row, column] = item;
++column;
if (column == columns)
{
++row;
column = 0;
}
}
return matrix;
}
su no establece valores en una matriz, su creación de una nueva * * array – vidstige