2

我确信这是一个简单的问题,但我没有足够的经验知道答案。:)

DataClass, Form1, Form2

我有一个公共课程,DataClass在一个单独的文件中,DataClass.vb。在DataClass我有数据存储在我需要访问的几个数组中。我有方法DataClass可以访问数据。其中之一是GetName。一切正常Form1。我需要在另一个表单上访问数组中的相同数据,但是我需要调用该类的一个新实例,所以当我调用访问数组的方法时,数据是空的。

我已经看到一些线程提到创建一个singleton class.,但大多数都是关于我不太熟悉的 C#。

最佳做法是什么?

4

2 回答 2

3

有很多方法可以做到这一点。其中之一将涉及创建一个Module然后Public在模块中创建实例化您的类的变量:

Module MyGlobalVariables
    Public MyDataClass As DataClass
End Module

现在,您项目中的所有表单都可以访问DataClassvia MyGlobalVariables.MyDataClass


一种更可取的方法是向您的 Form2 添加一个可以设置为DataClass实例的属性:

Public Property MyDataClass As DataClass

然后,您将按Form2如下方式实例化您的(假设您用于实例化的变量DataClassForm1称为_dataClass):

Dim frm2 As New Form2()
frm2.MyDataClass = _dataClass
frm2.Show()

最后,另一种方法是覆盖 的构造函数Form2并允许它接收类型的参数DataClass。然后,您可以实例Form2化为:

Dim frm2 As New Form2(_dataClass)

希望这可以帮助...

于 2013-01-19T22:42:04.310 回答
1

你可以像这样创建一个单例类

Public Class DataClass
    Public Shared ReadOnly Instance As New DataClass()

    Private Sub New()
    End Sub

    ' Other members here
End Class

Instance您可以通过自动初始化的共享成员访问单个实例。构造函数New是私有的,以禁止从类外部创建新实例。

您可以像这样访问单例

Dim data = DataClass.Instance

但这是不可能的

Dim data = new DataClass() 'NOT POSSIBLE!

由于单例类是通过类名访问的,所以可以很容易地从两种形式中访问。

于 2013-01-20T00:02:53.513 回答