使用foreach迭代对象列表
本文关键字:列表 对象 迭代 foreach 使用 | 更新日期: 2023-09-27 17:53:13
我看到了这句话:
"当对对象列表使用foreach时,迭代对象实例不可编辑,但对象属性是可编辑的"
谁能举个简单的例子说明一下?
让我重新表述一下(因为我发现这句话有两个版本),也许这句话更清楚:
"当对元素列表使用foreach时,提供元素的迭代变量是只读的,但是元素属性是可编辑的"
foreach(var foo in foos)
{
foo = null; // WRONG, foo is not editable
foo.name = "John"; // RIGHT, foo properties are editable
}
这意味着列表中的项在迭代时不能改变,但项的内容可以改变。
这将改变集合并阻止foreach完成:
foreach(var item in collection)
{
collection.Remove(item);
}
这将改变列表中的一个项目,而不阻止foreach完成:
foreach(var item in collection)
{
item.name = "Neil";
}
是
Foreach (n in list) if (n.something==true) list.Remove(n);
这将失败
不能删除list中的项,不像for循环
不确定是否需要一个示例。你可以遍历集合中的每个对象,你可以对每个对象做你喜欢的事情,但是你不能对集合本身进行更改,例如插入、删除、清除等。
foreach var car in cars
{
//you can edit car.color here
//you cannot edit car
}