2013-12-11 3 views
0

VB.Net에서 클래스 내부에 배열을 저장하는 방법을 궁금합니다. 이것은 (프로그램이로드 될 때 실행되는) 양식 코드입니다.클래스 내부에 기본 배열을 저장 public 속성

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim intArr As Integer() = {5, 3, 8, 1, 4, 6} 
    Dim statsObj As New StatsMachine() 
    statsObj.Data = intArr 
    Dim avg As Double = statsObj.Average() 
    txtAvg.Text = FormatNumber(avg, 2) 
    txtNumAboveAvg.Text = CStr(statsObj.NumElementsAbove(avg)) 
End Sub 

나는 이 코드를 (이 책에서 문제가) 변경을 허용하고 있지 않다 그리고 나는 그것을 실행할 수 있도록 클래스를 만들 예정입니다.

그래서 "StatsMachine"클래스를 만들었습니다. 내 첫 번째 공용 속성 인 Data는이 코드에서 생성 된 배열을 가져 와서 저장해야합니다. 불행히도 나는 이것을 작동시킬 수 없다. 지금 내 코드 :

Public Class StatsMachine 
    Dim sourceData As Form1 
    Dim m_arr() As Integer 

    Public Property Data As Integer 
     Get 
      Return m_arr 
     End Get 
     Set(ByVal value As Integer) 
      m_arr() = sourceData.intArr() 
     End Set 
    End Property 
End Class 

Visual Studio에서 sourceData.intArr()을 찾을 수 없다고합니다. 나는 이것을 호출 할 때 다른 식별자를 추가해야하기 때문에 이것이라고 가정합니다. 이것이 무엇입니까? 이것은 실제로 배열에만 적용되는 것이 아니라 양식 1에서 물건을 호출하는 방법을 모르겠습니다.

고마워요!

답변

1

난 당신이 코드 줄 뒤에 클래스와 속성을 구현하기 위해 노력하고 있으리라 믿고있어 :

statsObj.Data = intArr 

intArr 때문에 당신이 당신의 Data 속성이 동일해야 As Integer()를 선언하고있다.

당신은이 같은 클래스 할 것

:

Public Class StatsMachine 
    Private m_arr As Integer() 

    Public Property Data As Integer() 
     Get 
      Return m_arr 
     End Get 
     Set(ByVal value As Integer()) 
      m_arr = value 
     End Set 
    End Property 
End Class 

나는 내가 데이터 setter 함수에 배열을 설정하고있을 때 내 모든 괄호 정확히 올바른 가지고 있는지 확실하지 않습니다 (이 VB 때문에) 그것은 당신의 숙제 :

0

문제는를 Form1_Load의 코드가 실제로 사용자가 만든 클래스에 액세스 할 때를 Form1에서 데이터에 액세스하려고하는 것입니다 나를 신용하십시오으로 m_arr() = value

해야 할 수도 있습니다. Visual Studio에서 변수를 Form1로 선언하려고 시도하는 것에 대해 불평하지 않았다는 것에 놀랐습니다. 이름이 어딘가의 클래스가 없으면 예외입니다.

+0

예. 제 생각에는'Dim sourceData As Form1' 라인이 실제로'Dim sourceData As New Form1' 이었으면 오브젝트 생성의 끝없는 재귀 루프로 들어갔을 것입니다. –

관련 문제