2016-06-01 17 views
0

VB에서 사용자 지정 클래스에 들어가기 시작할 때이 오류가 발생하기 시작합니다. 선생님의 예를 따르려고했지만 VB의 고급 측면에 익숙해지기를 원했고 클래스 내에서 배열을 사용하려고했지만 잘 작동하지 않습니다.null 참조 사용자 지정 클래스에 쓸 때 예외가 발생했습니다.

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 포인터의 배열을 만들 수 있습니다. 클래스 포인트의 생성자를

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) 

:

mypt(PtSelect) = New Point(CDec(IX.Text), CInt(IY.Text), CDec(IZ.Text)) 
관련 문제