Static
 
定义具有静态存储的变量,对象和数组

语法

Static symbol1 [ (array-dimensions ) ] As DataType [ = expression ] [, symbol2 [ (array-dimensions ) ] As DataType [ = expression ], ...]
or
Static As DataType symbol1 [ (array-dimensions ) ] [ = expression ] [, symbol2 [ (array-dimensions ) ] [ = expression ], ...]

or

Sub|Function procedurename ( parameters ) [As DataType] Static
...
End Sub|Function

参数

symbol
变量或数组符号名称。
array-dimensions
lower-bound To upper-bound [, ...]
or
Any [, Any...]
or empty.
expression
常量表达式或常量表达式的数组

说明

为变量,对象和数组指定静态存储它们在程序启动时被赋值并在退出时被释放。对象在被定义时被构造一次,并且在程序退出时被破坏。

当声明静态数组时,只能使用数字文字常量枚举作为下标范围值。静态可变长度数组必须被声明为空(无下标范围列表),并在使用前使用ReDim进行调整大小。

在迭代和递归块中,如循环控制流程语句或过程,块的本地的静态变量,对象和数组都保证在块的所有实例中占用相同的存储空间。例如,直接或间接调用它们的过程共享其本地静态变量的相同实例。

一个静态变量只能用一个常量值初始化:在任何代码运行之前,它的起始值被设置在程序的开始处,因此它不能依赖于任何变量或函数。

当与模块级和成员过程声明一起使用时,Static为所有局部变量,对象和数组指定静态存储.

在模块级变量声明中,修饰符Shared可以与关键字Static一起使用,以使程序中的模块级静态变量可见。

当与用户定义的类型一起使用时,Static创建静态成员程序或变量.

例子

Sub f
    ''最初被称为0
    Static timesCalled As Integer = 0
    timesCalled += 1
    Print "次数:" & timesCalled
End Sub

''f()中的静态变量保持其值之间
''多个过程调用。
f()
f()

会输出:

Number of times called: 1
Number of times called: 2

方言差异

  • 变量无法在-lang qb 方言中初始化。

与QB差别

  • QuickBASIC允许使用过程中的静态的关键字和DEF FN 例程来声明变量和数组。
  • 静态的强制在QuickBASIC DEF FN 例程中的变量和数组的本地可见性。FreeBASIC既不支持DEF FN 例程,也不支持静态的的使用。

参考