Const (成员)
 
指定成员过程是只读的。

语法

Type typename
End Type

Const Sub|Function|... typename ...
...
End Sub|Function|...

说明

指定方法不会更改所调用的对象。隐藏的This参数将被视为只读。声明可以被读取为“调用const方法承诺不更改对象”,如果成员程序尝试更改任何数据字段或者调用非常量成员过程,编译器将会出错。

只读(Const)声明是可以被视为“承诺不改变”的类型安全性的度量。编译器使用const声明来检查对变量和参数的操作,并且如果数据可能会发生变化,则在编译时生成错误。由于所有的检查都是在编译时进行的,所以使用Const限定符没有运行时开销。

构造函数和析构函数不能为Const(无用)。
成员程序不能同时包含ConstStatic,因为静态成员过程没有隐藏的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差别

  • 新的FreeBASIC

参考