2011-04-21 54 views
2

我遇到以下問題。我有一個帶構造函數的類(一個New(<args>)方法)。我也有這個類的對象的List,我想填充。舉個例子,這裏的一些玩具代碼(避免性能和這樣):什麼可以被視爲VB.NET中的實例:對象引用未設置爲對象的實例

Class Thing 
    Public PositionX, PositionY As UInteger 
    Public Name As String 

    Public Sub New(ByVal name As String, _ 
        ByVal positionX As UInteger, _ 
        ByVal positionY As UInteger) 
     Me.PositionX = positionX 
     Me.PositionY = positionY 
     Me.Name = name 
    End Sub 

End Class 

此外,在代碼的其他地方,我宣佈的Thing個清單:

Dim things As List(Of Thing) 

當試圖運行下面的代碼行,things.Add(New Thing("some name', 1, 1)),我得到一個Object reference not set to an instance of an object異常。顯然,我誤解了一個對象的實例究竟是什麼以及VB.NET如何處理它們。我想它回到我的C/C++背景。

當然,我可以初始化與 New構造一個變量, 然後將其添加到列表:

下無法正常工作或:

Dim myThing = New Thing("some name", 1, 1) 
things.Add(myThing) 

我的問題爲什麼簡單地說New Thing("some name', 1, 1)沒有創建實例Thing什麼是正確的方式來思考這樣的事情?我做錯了什麼設計?

乾杯!

回答

4

在我看來像你只需要實例列表:

Dim things As New List(Of Thing) 

我覺得一切都很好與thing類的處理,但列表需要一個實例過 - 它是一種類/實例只是像事情一樣。

+0

OMG!我現在覺得很傻=)謝謝! (接受所需的10分鐘後回答如此) – Phonon 2011-04-21 14:57:06

+0

不用擔心&thx – 2011-04-21 14:57:52

2

你需要做的:

Dim things as New List(Of Thing) 

或:

Dim things as List(Of Thing) 
things=New List(Of Thing) 
相關問題