2012-09-02 41 views
0

這是一個關於列表列表的問題。爲什麼VB.NET的行爲像列表一樣?

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)),這不是我想要的。

它爲什麼這樣做,我該如何解決它?謝謝。

+2

查看您最喜愛的.NET編程書籍,瞭解值類型和引用類型之間的區別。 –

回答

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) 
+0

完美,謝謝。 – SiliconCelery

相關問題