更新时间:2021-07-13 21:56:19
好的,现在我们知道您的目标,而不是您尝试实现它的方式,回答您的问题要容易得多:你不应该使用 foreach
循环.foreach
是关于从集合中读取 项 - 不更改集合的内容.C# 编译器将迭代变量设置为只读是一项很好的工作,否则它会让您更改 variable 的值而不会实际更改集合.(必须进行更重大的更改才能反映更改...)
Okay, now that we know your aim instead of how you were trying to achieve it, it's much easier to answer your question: you shouldn't be using a foreach
loop. foreach
is about reading items from a collection - not changing the contents of a collection. It's a good job that the C# compiler makes the iteration variable read-only, otherwise it would have let you change the value of the variable without that actually changing the collection. (There'd have to be more significant changes to allow changes to be reflected...)
我怀疑你只是想要:
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
array[i, j] = new Item();
}
}
假设它是一个矩形数组(一个Item[,]
).如果它是一个 Item[][]
那么它是一个数组数组,你会稍微不同地处理它 - 很可能使用 foreach
进行外部迭代:
That's assuming it's a rectangular array (an Item[,]
). If it's an Item[][]
then it's an array of arrays, and you'd handle that slightly differently - quite possibly with a foreach
for the outer iteration:
foreach (var subarray in array)
{
for (int i = 0; i < subarray.Length; i++)
{
subarray[i] = new Item();
}
}