使用foreach和Jagged Arrays

时间:2012-02-02 22:41:12

标签: c# jagged-arrays

int[][] myArray = new int[10][];

foreach (int[] eachArray in myArray) {
eachArray = new int[2]
}

我相信它应该创建一个

的数组
{ 0 , 0 }
{0 , 0}
.........

锯齿状阵列太混乱......

2 个答案:

答案 0 :(得分:4)

这不会创建您正在寻找的锯齿状阵列。它试图将新的int[2]实例分配给迭代变量,而不是原始数组中的插槽。这甚至不会编译,因为编译器

将迭代变量视为readonly

执行此操作的方法是使用for循环

for (var i = 0; i < myArray.Length; i++) {
  myArray[i] = new int[2];
}

答案 1 :(得分:3)

不允许在foreach循环内分配循环变量。你需要一个带计数器的常规for循环,或者你可以尝试一些稍微有点漂亮的东西:

int[][] myArray = Enumerable.Range(0, 10).Select(i => new int[2]).ToArray();