gpt4 book ai didi

c# - 如何从 foreach 循环中修改 foreach 迭代变量?

转载 作者:可可西里 更新时间:2023-11-01 07:42:51 26 4
gpt4 key购买 nike

当我尝试这样做时...

Item[,] array = new Item[w, h];  // Two dimensional array of class Item, 
// w, h are unknown at compile time.
foreach(var item in array)
{
item = new Item();
}

...我得到 Cannot assign to 'item' because it is a 'foreach iteration variable'

不过,我还是想这样做。

想法是将默认的 Item 类值分配给现有项目。

最佳答案

好的,既然我们知道了您的目标,而不是您试图实现它的方式,那么回答您的问题就容易多了:您不应该使用 foreach 循环。 foreach 是关于读取 集合中的项目 - 而不是更改集合的内容。 C# 编译器将迭代变量设置为只读是一件好事,否则它会让您更改变量 的值,而不会实际更改集合。 (必须进行更重大的更改才能反射(reflect)更改...)

我怀疑你只是想:

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 进行外部迭代:

foreach (var subarray in array)
{
for (int i = 0; i < subarray.Length; i++)
{
subarray[i] = new Item();
}
}

关于c# - 如何从 foreach 循环中修改 foreach 迭代变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11810794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com