使过程中的变量成为全局变量

时间:2012-03-15 17:43:31

标签: vb.net

我知道标题看起来很微不足道但是我有一个问题,我似乎无法绕过它,我在一个子程序中有以下代码..

  Dim X, Y As Integer
    X = 32
    Y = 285

    X_coords(0) = X       ' x1 (a1)
    X_coords(1) = X - 13  ' x2 (a2)
    X_coords(2) = X + 16  ' x3 (a3)
    X_coords(3) = X + 63  ' x4 (b1)
    X_coords(4) = X + 45  ' x5 (b2)
    X_coords(5) = X + 74  ' x6 (b3)
    X_coords(6) = X + 124 ' x7 (c1)
    X_coords(7) = X + 103 ' x8 (c2)
    X_coords(8) = X + 132 ' x9 (c3)
    X_coords(9) = X + 63  ' x10 (b4)
    X_coords(10) = X + 76 ' x11 (y3)
    X_coords(11) = X + 21  ' x12 (n1)
    X_coords(12) = X + 9 ' x13 (q1)
    X_coords(13) = X + 65 ' x14 (q3)
    X_coords(14) = X + 117 ' x14 (q5)
    X_coords(15) = X + 87 ' x14 (q4)
    X_coords(16) = X + 31 ' x13 (q2)
    X_coords(17) = X + 139 ' x13 (q6)
    X_coords(18) = X + 76 ' x13 (q6)
    X_coords(19) = X + 129 ' x13 (q6)


    Y_coords(0) = Y        ' y1s1
    Y_coords(1) = Y - 23   ' y1s2
    Y_coords(2) = Y - 11.5 ' y1,2s
    Y_coords(3) = Y - 47   ' y2s1
    Y_coords(4) = Y - 70   ' y2s2
    Y_coords(5) = Y - 59 ' y2,2s 
    Y_coords(6) = Y - 132  ' y4s1
    Y_coords(10) = Y - 152  ' y4s2
    Y_coords(7) = Y - 140 ' y4 30cred
    Y_coords(8) = Y - 127 ' y4s1, 10cred
    Y_coords(9) = Y - 105 ' y3



    Dim a1 As New posData("a1", X_coords(0), Y_coords(0))
    Dim a2 As New posData("a2", X_coords(1), Y_coords(0)) 
    Dim a3 As New posData("a3", X_coords(2), Y_coords(0))
    Dim a4 As New posData("a4", X_coords(0), Y_coords(0)) 

我知道如何在你的类中创建全局变量,我想让a1,a2等全局,但他们必须采用所述X_coords和Y coords的值,我不知道如何使这个全局变为全局这样做..值是空白的,因为我不能全局初始化它们?

任何帮助?

2 个答案:

答案 0 :(得分:0)

将a1,a2 ...声明为全局变量(无论你的意思是全局变量)。然后在类的构造函数中,您可以为它们赋值:

Sub New()
    '....
    a1 = New ...
    '....

如果共享这些变量,则可以使用共享构造函数。

如果需要重新计算变量,那么将它们作为只读属性可能是个好主意。

答案 1 :(得分:0)

问题是全球性的?班级本身?

Public Class MyClass

Private a1 As posData
Private a2 As posData
Private a3 As posData
Private a4 As posData

Public Function SetVariables()

    'blah blah

    a1 = New posData("a1", X_coords(0), Y_coords(0))
    a2 = New posData("a2", X_coords(1), Y_coords(0))
    a3 = New posData("a3", X_coords(2), Y_coords(0))
    a4 = New posData("a4", X_coords(0), Y_coords(0))
End Function

结束班

变量可用于该类的当前实例中的任何函数。

全球适合您的申请?

Public Class MyClass

Public Shared a1 As posData
Public Shared a2 As posData
Public Shared a3 As posData
Public Shared a4 As posData

Public Function SetVariables()

    'blah blah

    a1 = New posData("a1", X_coords(0), Y_coords(0))
    a2 = New posData("a2", X_coords(1), Y_coords(0))
    a3 = New posData("a3", X_coords(2), Y_coords(0))
    a4 = New posData("a4", X_coords(0), Y_coords(0))
End Function

结束班

现在它们是静态的,并且在所有类的实例中共享。

希望有所帮助。