Ну, это может быть обман, потому что она просто перемещает зацикливание код в метод расширения, но это не позволяет инициализировать 2D массив в один значение просто и в порядке, аналогичном тому, как вы можете инициализировать 1D-массив для одного значения.
Во-первых, как уже упоминалось Джон Скит, вы можете очистить ваш пример инициализации 1D массив так:
int [] numbers = Enumerable.Repeat(1,20).ToArray();
С моим методом расширения, вы будете иметь возможность инициализировать 2D массив следующим образом:
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;
}
вы не устанавливая значения в массиве, ваше создание * новый * массив – vidstige