gpt4 book ai didi

c# - Foreach 没有遍历所有项目?

转载 作者:行者123 更新时间:2023-11-30 13:08:39 25 4
gpt4 key购买 nike

我有这个代码:

       foreach (var item in ListView1.Items)
{
ListView1.Items.Remove(item);
ListView21.Items.Add(item);
}

循环在项目的一半处停止?

有什么想法吗?

编辑

好吧,也许这是我的错误,我需要澄清这是 Infrajistics 的 UltraListView 控件,我无法将项目添加到另一个列表,除非我从原始列表中删除它或克隆它。

但是谢谢,关于在循环中不修改列表的大部分评论都是正确的,所以这段代码有效:

           foreach (var item in listView1.Items)
{
var i = item.Clone(true);
listView2.Items.Add(i);
}
listView1.Items.Clear();

谢谢,

最佳答案

您不能修改迭代集合,它应该因异常(或未定义的行为)而死。尝试复制数组:

   foreach (var item in ListView1.Items.ToArray())
{
ListView1.Items.Remove(item);
ListView21.Items.Add(item);
}

编辑:

其实你的示例代码可以这样写:

ListView21.Items.AddRange(ListView1.Items);
ListView1.Items.Clear();

(实际上这并不完全是您正在做的,但给出了相同的结果,我认为暂时不会打扰您在两个 ListView 中拥有相同的内容)。后者自 .NET2.0 起受支持,第一个解决方案需要 linq,因此需要 .NET3.5。

关于c# - Foreach 没有遍历所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3244502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com