在类公共属性中保存基本数组

时间:2013-12-11 01:44:36

标签: arrays vb.net class

我想知道如何在VB.Net中保存类中的数组。这是我的表单代码(它在程序加载时执行)。

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中调用它。

谢谢!

2 个答案:

答案 0 :(得分:1)

我假设你正在尝试实现这行代码背后的类和属性:

statsObj.Data = intArr  

由于intArr已声明As Integer(),您应该使Data属性相同。

你会想要一个这样的课程:

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

当我在Data setter函数中设置数组时,我不确定我的所有括号是否完全正确(因为它是VB)它可能需要m_arr() = value

一定要相信我的作业:)

答案 1 :(得分:0)

问题是,当Form1_Load中的代码实际访问您创建的类时,您正尝试从Form1访问数据。我很惊讶Visual Studio并没有抱怨尝试将变量声明为Form1,除非你在某个地方有一个类名。