写入自定义类时出现空引用异常

时间:2016-06-01 03:25:35

标签: arrays vba class

所以我刚刚开始进入VB中的自定义类,并在我尝试编写时遇到此错误。我试图按照老师的例子,但也想进入VB的一些更高级的方面,并试图在我的课程中使用一个数组,好吧,事情不太有效。

Form1类:

Dim mypt(7) As Point

Private Sub Create_Click(sender As Object, e As EventArgs) Handles Create.Click
    PtSelect = Input()  'Returns an int
    mypt(PtSelect).mC(0) = CDec(IX.Text) 'Error here!
    mypt(PtSelect).mC(1) = CDec(IY.Text)
    mypt(PtSelect).mC(2) = CDec(IZ.Text)
End Sub

点类:

Public Class Point
Private c(2) As Decimal

Public Sub New(ByVal X As Decimal, ByVal Y As Decimal, ByVal Z As Decimal)
    c(0) = X
    c(1) = Y
    c(2) = Z
End Sub

Public Property mC(Val As Integer) As Decimal
    Get
        Return c(Val)
    End Get
    Set(value As Decimal)
        c(Val) = value
    End Set
End Property
End Class

真的只是不确定在这一点上做了什么,我已经摆弄了我能想到的一切,但我不确定。在我遇到错误之前,我的老师确实说过可以在类中使用数组,我想让它工作。

2 个答案:

答案 0 :(得分:1)

在Vb.net中使用类时,它使用指针的概念。这意味着每个变量都指向一个对象。所以当你实例化你的数组时

 Dim mypt(7) As Point

它创建一个8指针数组,每个指针包含值Nothing。您必须使用

调用类Point的构造函数
New Point(2,2,3)

并使数组中的指针指向该对象。

mypt(1) = New Point(2,2,3)

答案 1 :(得分:0)

(代表OP发布)。

感谢用户Matriac!只有改变我必须做的是:

    mypt(PtSelect).mC(0) = CDec(IX.Text) 'Error here!
    mypt(PtSelect).mC(1) = CDec(IY.Text)
    mypt(PtSelect).mC(2) = CDec(IZ.Text)

对此:

mypt(PtSelect) = New Point(CDec(IX.Text), CInt(IY.Text), CDec(IZ.Text))