首页 新闻 会员 周边 捐助

遍历中不可以对变量进行操作吗

0
[已解决问题] 解决于 2019-04-13 18:38

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'

fangpengcheng_方鹏程的主页 fangpengcheng_方鹏程 | 菜鸟二级 | 园豆:206
提问于:2019-04-03 13:01
< >
分享
最佳答案
1

foreach使用了枚举器,而枚举器是不能更改底层集合的,但是可以更改集合中的对象引用的任何对象。这里的int是值类型,不能直接修改集合中的值。但是对于引用类型是可以

奖励园豆:5
ohyex | 小虾三级 |园豆:1696 | 2019-04-03 13:58

大佬,这里的int可以换成引用吗,怎么搞,我一脸懵,可以写个几行代码看看嘛,谢谢大佬

fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2019-04-04 08:54
其他回答(2)
0

书上是这么说的:不能对变量标识符 i 进行赋值,即使赋值,i 的值也不会改变;而且 foreach 在遍历的时候,他的元素计数和集合项也不能被改变,改动就会报错。

不管是 foreach 还是别的循环,建议在操作变量之前,赋值一个临时变量,然后操作临时变量,避免报错。

三人乐乐 | 园豆:4823 (老鸟四级) | 2019-04-03 14:53
0

记住,foreach循环中不能修改集合元素的值,你可以尝试 for

baicexxqtd | 园豆:26 (初学一级) | 2020-05-15 17:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册