什么可以被认为是VB.NET中的实例:对象引用未设置为对象的实例

时间:2011-04-21 14:52:19

标签: vb.net oop list constructor instance

我遇到了以下问题。我有一个带有构造函数的类(New(<args>)方法)。我还有一个List这个类的对象,我想填充。举个例子,这里有一些玩具代码(避免属性等):

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 s:

的列表
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实例什么是思考这些事情的正确方法?我在设计上做错了什么?

干杯!

2 个答案:

答案 0 :(得分:4)

在我看来你只需要列出你的列表:

Dim things As New List(Of Thing)

我认为处理thing类的一切都很好,但是列表也需要一个实例 - 它就像事物那样是一个类/实例。

答案 1 :(得分:2)

你需要这样做:

Dim things as New List(Of Thing)

或:

Dim things as List(Of Thing)
things=New List(Of Thing)