【发布时间】:2021-12-22 08:46:58
【问题描述】:
我想做的是从一个包含信息列表的类创建一个数组。
到目前为止我尝试过的是 - 首先,创建类:
Public Class PowerArray
Public Name As String
Public Action As String
Public Cost As Integer
Public Pool1 As String
Public Pool2 As String
Public Range As String
Public Duration As String
Public Tags As ArrayList = New ArrayList
Public Desc As String
End Class
然后,定义一个使用 PowerArray 作为类型的新对象,包含在公共类中,以便可以在任何子类中调用它:
Public Class GVar
Public Shared CharPowers(100) As PowerArray
Public Shared PCount As Integer = 0
End Class
但是当我尝试写入该对象时,它不断抛出空引用异常。
例子:
尝试向 CharPowers(GVar.Pcount) 写入条目(其中 PCount 当前为 0,“txt.PowerName.Text”为任意字符串):
GVar.CharPowers(GVar.PCount).Name = txtPowerName.Text
...抛出异常。无论我尝试写入哪个值,都会发生这种情况。
在使用该类型(不是数组,而只是一个简单的对象)在 sub 中定义新对象时,我没有遇到任何重大的挂断,所以我猜它是一个数组的对象投掷适合。我只是无法弄清楚如何或为什么。它显然存在,它是在启动时定义的。
【问题讨论】:
-
fwiw,你应该从不使用
ArrayList。它是在 .Net 2.0 泛型之前创建的,并且在今天专门用于向后兼容和一些 powershell 支持,但 在新代码中根本没有位置。即使你真的不知道你会用这个集合做什么,你仍然应该倾向于List(Of Object)。 -
为什么吃掉PowerArray字段的所有成员而不是Properites?
标签: arrays vb.net nullreferenceexception