定义具有静态存储的变量,对象和数组
语法
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
方言差异
与QB差别
- QuickBASIC允许使用过程中的静态的关键字和DEF FN 例程来声明变量和数组。
- 静态的强制在QuickBASIC DEF FN 例程中的变量和数组的本地可见性。FreeBASIC既不支持DEF FN 例程,也不支持静态的的使用。
参考