C# 中foreach能更改集合内容吗?

来源:百度知道 编辑:UC知道 时间:2024/09/22 04:06:05
MSDN说foreach“不应用于更改集合内容以避免产生不可预知的副作用”。。那是能改还是不能改?
我试验怎么好像能改?

能改
MSND上说“不应用于更改集合内容以避免产生不可预知的副作用”的意思应该是看foreach的是什么对象集合,如果是数组的话肯定没问题。

不能改,只是遍历

foreach不能改,只能遍历
for能改

是可以改,比如:
foreach(datarow row in datatable.row)
{
if (row["test"].ToString() == "test")
row.delete();
}

这个时候就更改了datatable中的内容,如果这时datatable中原记录是10条,当执行过row.delete()之后,就变成了9条,如果再引用row中的数据就会出错了...

错了,for循环和foreach最大的区别就是
for里面能更改值,foreach是只向前只读的循环,里面不能做修改,只能读。
你定义一个数组试一试,出了循环看值变不变。

能更改原有的值,但是不能添加或者删除
就是不能使count发生变化