VB.Net:迭代时添加到列表

时间:2017-01-26 20:19:14

标签: vb.net list loops for-loop collections

我正试图找出一种方法来添加到正在迭代的列表......

示例代码(调用test()

Dim listOfString As New List(Of String)

Public Sub test()
    For Each aString in listOfString
          getNumber(aString)
     Next
End Sub

Public Sub getNumber(theString as String)
     'Does Something
     listOfString.add(Something)
End Sub

我的目标是继续将元素添加到listOfString的末尾,同时继续迭代它直到它结束。我的实际代码出现Collection was modified; enumeration operation may not execute错误。谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

我想添加评论中未说明的内容:

查看您的代码,"播放" CLR:

  1. 创建新的字符串listOfString
  2. 列表
  3. (不在您的代码中:)将1个开始项添加到您的列表中
  4. 开始循环列表listOfString中的每个项目 - >包含1个项目
  5. 将1个项目添加到列表中 - >包含2个项目
  6. 到达listOfString的结尾?不,我们只有2件物品,而且#34;循环播放" - >继续每个
  7. 将1个项目添加到列表中 - >包含3个项目
  8. 到达listOfString的结尾?现在我们有3个项目只有2个项目是"循环" - >继续每个
  9. 将1个项目添加到列表中 - >包含4个项目
  10. 到达listOfString的结尾?现在我们有4个项目只有3个项目是"循环"。 ....
  11. 我猜你明白了。如果.NET允许你的方法,你将在这里结束无限循环。

    你可以做的事已在评论中说过了。创建两个列表,将新项目添加到第二个列表,然后再添加UnionConcat