foreach(ListViewItem m_item in listView1.Items)<br>{<br> if(m_item.Selected||m_item.Checked)<br> {<br> listView1.Items[i].RemoveAt(m_item.Index);<br> }<br>}<br><br>在winform中,这段代码为什么会出错呢?<br>
2 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
《C#语言规范》 8.8.4 foreach 语句 在 foreach 语句执行期间,迭代变量表示当前正在为其执行迭代的集合元素。如果嵌入语句试图修改迭代变量(通过赋值或 ++ 和 -- 运算符)或将迭代变量作为 ref 或 out 参数传递,则将发生编译时错误。 《规范》给出了foreach的背后扩展形式 E enumerator = (collection).GetEnumerator(); try { while (enumerator.MoveNext()) { ElementType element = (ElementType)enumerator.Current; statement; } } finally { IDisposable disposable = enumerator as System.IDisposable; if (disposable != null) disposable.Dispose(); } 并说,enumerator 变量是一个临时变量,它在嵌入 statement 中既是不可访问的,也是不可见的,元素变量在嵌入 statement 中是只读的。 如果要进一步探究,请先了解迭代模式。
- 2 回答
- 0 关注
- 659 浏览
添加回答
举报
0/150
提交
取消