ForEach内でコレクションを変更するには

カテゴリ: VB.NET
投稿日時:2009/01/13 11:04:19
ForEach内でコレクションの値を変更すると、以下のエラーが発生します。

「コレクションが変更されました。列挙操作は実行されない可能性があります。」



エラーが発生する例


Dim dic As New Dictionary(Of String, Integer)

dic.Add("a", 1)
dic.Add("b", 2)
dic.Add("c", 3)

For Each itm As KeyValuePair(Of String, Integer) In dic
    dic(itm.Key) = 0
Next


キーのリストを作成し、ForEachする例


Dim dic As New Dictionary(Of String, Integer)

dic.Add("a", 1)
dic.Add("b", 2)
dic.Add("c", 3)

'キーのリストを作成し、ForEachする
Dim list As New List(Of String)(dic.Keys)

For Each strKey As String In list
    dic(strKey) = 0
Next
このエントリーをはてなブックマークに追加

スポンサード リンク