из-за того, что теперь есть возможность нарезать массив с хитрым пиковым способом, как arr[1..4]
Я хотел нарезать 2D-массив.
Учтите следующее:
int[][] matrix = new int[4][]
{
new int[] {1,2,3,4 },
new int[] {5,6,7,8 },
new int[] {9,10,11,12 },
new int[] {13,14,15,16 }
};
foreach (var item in matrix[0..2][0..2].SelectMany(x => x))
{
Console.Write(item + " ");
}
// output: 1 2 3 4 5 6 7 8
foreach (var item in matrix[0..3][0..2].SelectMany(x => x))
{
Console.Write(item + " ");
}
// output: 1 2 3 4 5 6 7 8
foreach (var item in matrix[0..1][0..2].SelectMany(x => x))
{
Console.Write(item + " ");
}
// Error : System.ArgumentOutOfRangeException: 'Specified argument was out of the range of valid values
Я ожидаю, что первый вывод будет 1 2 5 6
, второй 1 2 5 6 9 10
и третий 1 2
.
Как я могу сделать это "способом нарезки" для достижения ожидаемого результата?
PS это я или это нелогичное поведение.