2016-06-01 59 views
0

因此,我刚开始进入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 

真的只是不知该怎么办过去,这一点,我拨弄着,我能想到的可能是它,但我的一切不确定。我的老师确实说过,在我遇到错误之前,可以在类中使用数组,并且我想让它工作。

回答

1

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

Dim mypt(7) As Point 

它创建8指针,每个包含什么值钱的东西的数组。你必须调用你的类的构造函数Point with

New Point(2,2,3) 

并使你的数组​​中的指针指向那个对象。

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

这正是它!谢谢您的帮助! – lukeb28

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) 

要这样:

​​