VB中属性的定义是什么
VB中各个空间都有其对应的属性窗口,这个我知道,但是这个属性的定义到底是什么呢?什么样子的东东才算是一个属性呢?或者说我怎样才算定义了一个属性呢?如果我在模块中定义一个变...
VB中各个空间都有其对应的属性窗口,这个我知道,但是这个属性的定义到底是什么呢?什么样子的东东才算是一个属性呢?或者说我怎样才算定义了一个属性呢?
如果我在模块中定义一个变量,那么他能被称之为一个属性吗?如果这是一个属性,那就意味着我就必须要写他的属性过程才能使用了,而如果这个不算是一个属性的话,要怎样去定义一个属性呢?而且这样定义的一个属性和我在模块中定义的一个变量的区别难道就只是我可以通过属性过程来设置他的读写?
那么属性的意义在于什么?
抱歉只有29分,所以只能拿出20出来。 展开
如果我在模块中定义一个变量,那么他能被称之为一个属性吗?如果这是一个属性,那就意味着我就必须要写他的属性过程才能使用了,而如果这个不算是一个属性的话,要怎样去定义一个属性呢?而且这样定义的一个属性和我在模块中定义的一个变量的区别难道就只是我可以通过属性过程来设置他的读写?
那么属性的意义在于什么?
抱歉只有29分,所以只能拿出20出来。 展开
2个回答
展开全部
有 Property 关键字修饰的方法叫属性,其中只有 Let 的叫只写属性,只有 Get 的叫只读属性,既有 Get 又有 Let 的叫可读写属性。
例如:
Private myHair As Long
Public Property Let Hair(ByVal vData As Long)
'向属性指派值时使用,位于赋值语句的左边。
myHair = vData
End Property
Public Property Get Hair() As Long
'检索属性值时使用,位于赋值语句的右边。
Hair = myHair
End Property
这样就有了一个 Hair 属性,既可读又可写。
属性是对象的一个特性,你要写也是在“类模块”里写,而不是“模块”里写。
追问
您的意思就是“类模块”中定义的变量,并且有相应的属性过程定义的才被认为是属性?
那如果这样的话,我在类模块中定义一个public的常量,和我在类模块中定义一个可读写的属性,这两者间其实是没有什么调用上的区别了?甚至我可以认为这个public的常量就是一个可读写的属性?
追答
即使是可读写的属性,跟公共字段也不一样。
一般来讲字段是封闭的,属性才是公开的。另外可以用属性来进行数据合法性检验。
比如存在一个 integer 类型的字段 myVolumn 代表音量,我希望它只能从 0-100 内取值,可以就可以:
Private myVolumn As Integer
Public Property Let Volumn(ByVal vData As Integer)
If (vData < 0) Then
myVolumn = 0
Else If (vData > 100) Then
myVolumn = 100
Else
myVolumn = vData
End If
End Property
Public Property Get Volumn() As Integer
Volumn = myVolumn
End Property
当然,对于非法的属性赋值,还可以直接抛出异常,这里不赘述了。
这就是单纯的公共变量所做不到的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询