我遇到了以下问题。我有一个带有构造函数的类(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
的实例什么是思考这些事情的正确方法?我在设计上做错了什么?
干杯!
答案 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)