| 
                ■No97702 (ぴっぴ さん) に返信 > Dim dic As Dictionary(Of Integer, List(Of 自作クラス)) = New Dictionary(Of Integer, List(Of 自作クラス)) > というようにDictionaryを作成しました。 > dic.Add(i, lsttData)
  たとえば、Dictionary(Of Integer, ListBox) を想像してみてください。  dic.Add(0, Me.ListBox1)  dic.Add(1, Me.ListBox1) とした場合、ListBox1 という同一のインスタンスが Key 0 と Key 1 で共有されます。
  この状態で、  dic(1).Items.Add("New Item") とすれば、Me.ListBox1 に対する操作となるわけですから、 dic(1).Items だけでなく dic(0).Items の件数も増加しますよね。
  同一の List(Of ) インスタンスを登録していた場合も、それと同じ事が起きます。
 
  『空の List(Of )』を追加することが目的なら、  dic.Add(i, New List(Of 自宅クラス)()) のように、新しいインスタンスを追加します。
 
  『既存リストのコピー』を追加したい場合は、別インスタンスを生成するために、  dic.Add(i, lsttData.ToList()) とすることはできます。こうすることによって、 dic(1).Add 操作を行っても、dic(0) の件数が変化しなくなります。
  また今回の場合、List(Of 自作構造体) ではなく List(Of 自作クラス) であるため、場合によっては、 List(Of ) の個々のメンバーに対しても複製が必要になる可能性があります。
  たとえば List(Of FileStream) を管理していた場合、そのリストを複製するにあたり、  「同一のファイルストリームへの参照」  「同じファイルを共有アクセスで開いている別のストリーム」  「別フォルダの同名ファイルを開いているストリーム」  「同フォルダの別名ファイルを開いているストリーム」 など、どのような複製が必要とされるかは、ケースバイケースですよね。
  |