悬赏分:20 浏览:268 次
|
foreach(int i=0; i<listView1.Items.Count; i++)
{ ListViewItem m_item = listView1.Items[i]; if(m_item.Selected||m_item.Checked) { listView1.Items.RemoveAt(i); i--; } } 《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 中是只读的。 如果要进一步探究,请先了解迭代模式。 |