gwa*_*rah 7 vbscript const class
我试图用常量创建一个vb脚本类,并且出现800A03EA错误.这是一个VBS错误?这不是OOP的基本规则吗?
Class customer
' comment it const and its works
const MAX_LEN=70
Private Name
Private Sub Class_Initialize
Name = ""
End Sub
' name property.
Public Property Get getName
getName = Name
End Property
Public Property Let letName(p_name)
Name = p_name
End Property
end class
Run Code Online (Sandbox Code Playgroud)
Ans*_*ers 13
该文档列出了类上下文中允许的所有语句.Const
不在其中,所以不支持.您可以使用在实例化期间初始化的私有成员变量(即in Class_Initialize
)来解决此问题:
Class customer
Private MAX_LEN
Private Name
Private Sub Class_Initialize
MAX_LEN = 70
Name = ""
End Sub
...
End Class
Run Code Online (Sandbox Code Playgroud)
如果类的实例应公开此值,则可以将其实现为只读属性:
Class customer
Private MAX_LEN
Private Sub Class_Initialize
MAX_LEN = 70
End Sub
'read-only property, so no "Property Let/Set"
Public Property Get MaxLength
MaxLength = MAX_LEN
End Property
...
End Class
Run Code Online (Sandbox Code Playgroud)
但是,正如Ekkehard.Horner正确指出的那样,对象内部代码仍然可以改变该值.如果不变性是该值的主要要求,则应将其实现为全局常量.
我同意Ansgar Wiechers的回答,但我想提出另一个选择.
如果不变性比性能更重要,则可以将值直接放在Get中,并使用属性来引用值而不是类级变量.
Class customer
'read-only property, so no "Property Let/Set"
Public Property Get MaxLength
MaxLength = 70
End Property
...
End Class
Run Code Online (Sandbox Code Playgroud)