Static (Visual Basic)

指定在其中声明一个或多个局部变量的过程终止后,这些已声明的局部变量继续存在并保留其最新值。

备注

通常,过程终止后,此过程中的局部变量将立即消失。 静态变量可继续存在,并保留其最新值。 您的代码下次调用该过程时,此变量不会重新初始化,仍然保存已赋给它的最新值。 静态变量在定义它的类或模块的生存期内继续存在。

规则

  • **声明上下文。**只能对局部变量使用 Static。 这意味着 Static 变量的声明上下文必须是一个过程或过程中的块,而不能是源文件、命名空间、类、结构或模块。

    不能在结构过程内使用 Static。

  • 无法推断出 Static 局部变量的数据类型。 有关更多信息,请参见 局部类型推理 (Visual Basic)

  • **组合修饰符。**不能在同一个声明中同时指定 Static 与 ReadOnly、Shadows 或 Shared。

行为

任何局部变量的行为都取决于此变量是否在 Shared 过程中声明。 如果过程为 Shared,则其所有局部变量都自动共享, 其中包括 Static 变量。 整个应用程序只有一个这种变量的副本。 使用类名调用 Shared 过程,而不是使用指向此类的实例的变量。

如果过程不是 Shared,则其局部变量为“实例变量”, 其中包括 Static 变量。 每个变量在类的每个实例中都有一个独立的副本。 使用指向类的特定实例的变量调用非共享过程。 该实例中的任何变量都与另一实例中相同名称的变量无关。 因此,它们可以存储不同的值。

示例

下面的示例说明 Static 的用法。

Function updateSales(ByVal thisSale As Decimal) As Decimal
    Static totalSales As Decimal = 0
    totalSales += thisSale
    Return totalSales
End Function

Static 变量 totalSales 只初始化为 0 一次。 每次输入 updateSales 时,totalSales 仍然包含为其计算的最新值。

Static 修饰符可用于下面的上下文中:

Dim 语句 (Visual Basic)

请参见

参考

Shadows (Visual Basic)

Shared (Visual Basic)

概念

Visual Basic 中的生存期

Visual Basic 中的变量声明

局部类型推理 (Visual Basic)

其他资源

结构 (Visual Basic)

Visual Basic 中的对象和类