Просто так их сконвертировать нельзя. Реализацию не знаю, но внутри массивы разных размерностей различаются между собой по структуре. На моем ПК это дает 2 2 0 0:
var array2 = new int[,]
{
{ 1, 2 },
{ 3, 4 }
};
var array = Unsafe.As<int[]>(array2);
foreach (var i in array)
{
Console.WriteLine(i);
}
Единственный вариант в данном случае - вручную создавать и копировать. Разве что можно сделать это оптимальнее.
var array2 = new int[,]
{
{ 1, 2 },
{ 3, 4 }
};
var arrayDst = new int[array2.GetLength(0) * array2.GetLength(1)];
Buffer.BlockCopy(array2, 0, arrayDst, 0, 4 * sizeof(int));
P.S. тут надо заметить, что
Buffer.BlockCopy
принимает количество
байтов, а не элементов + копировать может только примитивные типы