0

これはリストのリストに関する質問です。

    Dim smallList As New List(Of Integer)
    Dim largeList As New List(Of List(Of Integer))

    smallList.Add(3)
    largeList.Add(smallList)
    smallList.Clear()
    smallList.Add(4)
    largeList.Add(smallList)

このコードでは、largeListがリスト(3)をそれ自体に追加してから、リスト(4)をそれ自体に追加することを期待しています。しかし、データをsmallList内に格納する代わりに、参照smallListを格納しているように見えるため、((4)、(4))を含むことになります。これは、私が望むものではありません。

なぜそれがこれを行うのですか、そしてどうすればそれを回避できますか?ありがとう。

4

1 に答える 1

2

参照型のリストがある場合、実際には参照のリストがあります。リストに何かを追加することは、データがコピーされることを意味するのではなく、リストに追加されるのは単なる参照です。

リストに個別のオブジェクトを追加するには、アイテムごとに新しいオブジェクトを作成する必要があります。リストはそれ自体が参照型であるため、リストにも適用されます。

Dim smallList As List(Of Integer) ' just a reference at this time
Dim largeList As New List(Of List(Of Integer))

smallList = New List(Of Integer)() ' The first list
smallList.Add(3)
largeList.Add(smallList)
smallList = New List(Of Integer)() ' Here's another list
smallList.Add(4)
largeList.Add(smallList)
于 2012-09-02T20:23:57.603 に答える