指定成员过程是只读的。
语法
说明
指定方法不会更改所调用的对象。隐藏的
This参数将被视为只读。声明可以被读取为“调用const方法承诺不更改对象”,如果成员程序尝试更改任何数据字段或者调用非常量成员过程,编译器将会出错。
只读(
Const)声明是可以被视为“承诺不改变”的类型安全性的度量。编译器使用const声明来检查对变量和参数的操作,并且如果数据可能会发生变化,则在编译时生成错误。由于所有的检查都是在编译时进行的,所以使用
Const限定符没有运行时开销。
构造函数和析构函数不能为
Const(无用)。
成员程序不能同时包含
Const和
Static,因为静态成员过程没有隐藏的
This参数。
对于在其声明中具有
Const的方法,也可以在相应的方法体上指定
Const,以提高代码可读性。
例子
''会员程序
Type foo
x As Integer
c As Const Integer = 0
Declare Const Sub Inspect1()
Declare Const Sub Inspect2()
Declare Sub Mutate1()
Declare Sub Mutate2()
End Type
''
Sub foo.Mutate1()
''我们可以改变非const数据字段
x = 1
'' but we still can't更改const数据
''他们承诺不会改变
'' c = 1 ''编译错误
End Sub
''
Sub foo.Mutate2()
''我们可以调用const成员
Inspect1()
''和非const成员
Mutate1()
End Sub
''
Sub foo.Inspect1()
''可以使用数据成员
Dim y As Integer
y = c + x
''但不能更改它们,因为Inspect1()
''是const并承诺不改变foo
'' x = 10 ''编译错误
End Sub
''
Sub foo.Inspect2()
''我们可以调用const成员
Inspect1()
''但不是非const成员
'' Mutate1() ''编译错误
End Sub
与QB差别
参考