声明级别 Local 和 Member 变量

局部变量 - 在类(或其他结构)的过程(子例程或函数)中声明的变量。在这个例子中,exampleLocalVariable 是在 ExampleFunction() 中声明的局部变量:

Public Class ExampleClass1

    Public Function ExampleFunction() As Integer
        Dim exampleLocalVariable As Integer = 3
        Return exampleLocalVariable
    End Function

End Class

Static 关键字允许保留局部变量并在终止后保持其值(通常,当包含过程终止时,局部变量不再存在)。

在此示例中,控制台是 024。在每次从 Main() 调用 ExampleSub() 时,静态变量保留它在前一次调用结束时的值:

Module Module1

    Sub Main()
        ExampleSub()
        ExampleSub()
        ExampleSub()
    End Sub

    Public Sub ExampleSub()
        Static exampleStaticLocalVariable As Integer = 0
        Console.Write(exampleStaticLocalVariable.ToString)
        exampleStaticLocalVariable += 2
    End Sub

End Module

成员变量 - 在类(或其他结构)级别的任何过程之外声明。它们可以是实例变量,其中包含类的每个实例都有自己的该变量的不同副本,或 Shared 变量,它们作为与类本身关联的单个变量存在,独立于任何实例。

这里,ExampleClass2 包含两个成员变量。ExampleClass2 的每个实例都有一个单独的 ExampleInstanceVariable,可以通过类引用访问。但是,使用类名访问共享变量 ExampleSharedVariable

Module Module1

    Sub Main()

        Dim instance1 As ExampleClass4 = New ExampleClass4
        instance1.ExampleInstanceVariable = "Foo"

        Dim instance2 As ExampleClass4 = New ExampleClass4
        instance2.ExampleInstanceVariable = "Bar"

        Console.WriteLine(instance1.ExampleInstanceVariable)
        Console.WriteLine(instance2.ExampleInstanceVariable)
        Console.WriteLine(ExampleClass4.ExampleSharedVariable)

    End Sub

    Public Class ExampleClass4

        Public ExampleInstanceVariable As String
        Public Shared ExampleSharedVariable As String = "FizzBuzz"

    End Class

End Module