foreach(int i in arr){
Console.WriteLine(i);
i=i+5;
}
报错:
Microsoft (R) Visual C# Compiler version 4.0.30319.34209
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.
c:\program\bb.cs(9,4): error CS1656: Cannot assign to 'i' because it is a 'foreach iteration variable'
foreach
使用了枚举器,而枚举器是不能更改底层集合的,但是可以更改集合中的对象引用的任何对象。这里的int
是值类型,不能直接修改集合中的值。但是对于引用类型是可以
大佬,这里的int可以换成引用吗,怎么搞,我一脸懵,可以写个几行代码看看嘛,谢谢大佬
书上是这么说的:不能对变量标识符 i 进行赋值,即使赋值,i 的值也不会改变;而且 foreach 在遍历的时候,他的元素计数和集合项也不能被改变,改动就会报错。
不管是 foreach 还是别的循环,建议在操作变量之前,赋值一个临时变量,然后操作临时变量,避免报错。
记住,foreach循环中不能修改集合元素的值,你可以尝试 for