none
CheckedListBox删除选中项的一个问题 RRS feed

  • 问题

  • 是这样的 使用下面这个循环可以正常的删除列表中的选中项


            For i As Integer = CheckedListBox1.CheckedItems.Count - 1 To 0 Step -1
                CheckedListBox1.Items.Remove(CheckedListBox1.CheckedItems(i))
            Next

    但是 我感觉使用下面这个循环其实是和上面等价的 但是为什么卡在Next那出现一个异常?

            For Each checkeditem As Object In CheckedListBox1.CheckedItems

                CheckedListBox1.Items.Remove(checkeditem)

            Next

    我觉得问题应该出在For Each checkeditem As Object In CheckedListBox1.CheckedItems 上...

    =V=不过不知道为什么这样不行 还希望老师们说明一下 谢谢!

    2010年5月16日 4:18

答案

  • 你好!

         foreach和for的后台实现原理不同,foreach内部是使用枚举器进行遍历的,所以不建议在foreach中对集合进行修改,会产生一些意想不到的问题!


    周雪峰
    • 已标记为答案 magic_os 2010年5月17日 13:33
    2010年5月17日 5:52
    版主

全部回复

  • 你好!

         foreach和for的后台实现原理不同,foreach内部是使用枚举器进行遍历的,所以不建议在foreach中对集合进行修改,会产生一些意想不到的问题!


    周雪峰
    • 已标记为答案 magic_os 2010年5月17日 13:33
    2010年5月17日 5:52
    版主
  • 非常感谢!!

    ~另外我想问一下那个IL代码怎么看??

    2010年5月17日 13:37
  • 你好!

         可以使用ILDasm这个工具来查看,如果你的VS2008安装在C盘,这个工具在:

    C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin


    周雪峰
    2010年5月17日 14:36
    版主
  • 明白了~非常感谢^~^*
    2010年5月18日 2:01