1、foreach中可以用容器的方法修改容器,比如List的add,remove,且在foreach结束前要break才不会出现那个什么不能修改枚举值的错误。
2、foreach中不能直接修改容器中的内容,比如容器中装了一个struct,struct里面有个string,若想直接更改这个string就算加上break也不行。代替的方法是先复制该容器,再remove,再add进去。真麻烦- -!;或者给struct添加属性。  所以尽管foreach很方便,但这种局限性有时候很抓狂,用很多控件提供的GetEnumerator去遍历容器也不可修改之,郁闷地只能用for,List还好可用下标遍历,但Dictonary就郁闷了。还好现在没遇到非要修改dictionary的时候,到时候再想办法吧。  以上是最近写C#的的一点心得,记录一下便需要时查看,请多多指教。

解决方案 »

  1.   

    dictionary? 你要遍历吗? 修改不是 类似 set value of key 吗?
      

  2.   

    foreach中元素是不能直接被修改的,但元素的属性则可以。
    要修改元素的直接用for。
      

  3.   

    第1点如你所说,但第二点不是你说的那样:“foreach中元素是不能直接被修改的,但元素的属性则可以”,一般是不能更改集合里面元素的个数,如增加、删除!
    但是,修改元素的属性和值是可以的
      

  4.   

    foreach中不允许删除遍历的对象,可以做一个list先保存要删除的对象,遍历跳出后,在遍历这个list,删除掉,然后清空list