foreach遍历的问题

.Net技术 码拜 8年前 (2016-09-13) 1787次浏览
如下面代码,本人想要删除dict字典表里的某个数据,但是字典key不连续,所以用foreach遍历,本人晓得foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等)。所以本人定义了一个临时字典,将dict赋给这个临时字典,然后遍历这个临时字典,得到key后,从dict中删除掉。可是这样还是会报错:集合已修改;可能无法执行枚举操作。小弟有点糊涂了,本人操作这个临时字典会对源字典产生影响吗?这个字典之间的拷贝是怎么一种机制?还有本人应该怎么样解决这个问题,谢谢了。

  private void button2_Click(object sender, EventArgs e)
        {
            Dictionary<int, int> b = new Dictionary<int, int>();
            b = dict;//dict是本人定义好的一个有数据的字典,但key不连续
            if (dict.Count != 0)
            {
                foreach (var a in b.Keys)
                {
                   //某种操作得到本人想要删除的key
                    dict.Remove(a);
                }
            }
            MessageBox.Show("ok");
        }
解决方案

5

Dictionary是一个引用:

Quote: 引用:

foreach (var a in b.Keys.Cast<int>().ToList())

看不太懂,求详解~

b.Keys.Cast<int>().ToList()
tolist()弄了一个拷贝


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明foreach遍历的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)