Visual Basic 语言参考 |
声明属性的名称和用于存储和检索属性值的属性过程。
[ <attrlist> ] [ Default ] [ Public | Private | Protected | Friend | Protected Friend ] _ [[ ReadOnly | WriteOnly ] [ Overloads | Overrides ] _ [ Overridable | NotOverridable ] | MustOverride | Shadows | Shared ] _ Property varname([ ByVal parameter list ]) [ As typename ] [ Implements interfacemember ] [ <attrlist> ] Get [ block ] End Get [ <attrlist> ] Set(ByVal value As typename ) [ block ] End Set End Property
各部分说明
-
attrlist
- 可选。应用于此属性的特性列表。多个属性以逗号分隔。 Default
- 可选。声明默认属性。默认属性必须接受参数,并且不必指定属性名即可设置和检索默认属性。 Overloads
-
可选。指示该属性重载一个或多个基类中定义的同名属性。此声明中的参数列表必须不同于每个重载属性的参数列表。列表必须在参数个数、参数数据类型或者两方面均有所不同。这使编译器能够区分要使用哪个版本。
当在同一个类中定义多个重载属性时,不必使用 Overloads 关键字。然而,如果在某个声明中使用 Overloads,则必须在所有的声明中使用它。
在同一个属性声明中不能同时指定 Overloads 和 Shadows。
Overrides
- 可选。指示此属性重写基类中的同名属性。参数的个数和数据类型以及返回值的数据类型都必须完全与基类属性的这些相应项相匹配。 Overridable
- 可选。指示此属性可被派生类中的同名属性重写。 NotOverridable
- 可选。指示不能在派生类中重写此属性。默认情况下,属性是 NotOverridable,但不能对没有重写另一个成员的属性或方法指定 NotOverridable 修饰符。 MustOverride
- 可选。指示此属性不在此类中实现,而是必须在派生类中实现,此类才能是可创建的。 Shadows
-
可选。指示此属性隐藏基类中的同名编程元素或重载元素集。可以用其他任何类型的元素来隐藏任何类型的被声明元素。如果用另一个属性隐藏某个属性,则参数和返回类型不必一定要与基类属性中的对应项相匹配。被隐藏的元素在隐藏它的派生类内不可用,除非隐藏元素不可访问,例如,如果它为
Private。
注意 在同一个属性声明中不能既指定 Overloads 又指定 Shadows。
Shared
- 可选。指示这是一个共享属性。这意味着它不与类或者结构的特定实例相关联。可以通过用类名或结构名或者用类或结构的特定实例的变量名限定共享属性来调用它。 Public
- 可选。用 Public 修饰符声明的实体具有公共访问权限。对公共实体的使用没有限制。默认情况下,没有指定访问修饰符的属性是 Public 权限。 Private
- 可选。用 Private 修饰符声明的实体具有私有访问权限。私有实体只在其声明上下文中是可访问的,包括任何嵌套实体。 Protected
- 可选。用 Protected 关键字声明的实体具有受保护的访问权限。仅可以从其自己的类或派生类中访问它们。只能对类成员指定受保护的访问。它不是友元访问的超集。 Friend
- 可选。用 Friend 修饰符声明的实体具有友元访问权限。具有友元访问权限的实体只有在包含此实体声明的程序内才是可访问的。 Protected Friend
- 可选。用 Protected Friend 修饰符声明的实体同时具有受保护访问权限和友元访问权限。 ReadOnly
- 可选。指示可以检索属性值,但不能修改属性值。 ReadOnly 属性包含 Get 块但缺少 Set 块。 WriteOnly
- 可选。指示属性可以是赋值的目标,但不能检索它的值。 WriteOnly 属性包含 Set 块但缺少 Get 块。 varname
- 必选。标识属性的唯一名称。 parameter list
- 可选。这标识属性的签名。属性的参数必须用 ByVal 传递。 typename
- 可选。如果未指定数据类型,则默认类型为 Object。如果属性正在实现接口中的某个属性,则 typename 必须匹配该接口中声明的类型。 Implements
- 可选。指示该属性实现接口的属性。 interfacemember
- 可选。如果属性是实现接口的类的一部分,则为所实现属性的名称。 Get
- 启动用于返回属性值的 Get 属性过程。 Get 块是必需的,除非属性标志为 WriteOnly。 End Get
- 终止 Get 属性过程。 Set
- 启动用于设置属性值的 Set 属性过程。 Set 块是必需的,除非属性标志为 ReadOnly。当属性值更改时,该属性的新值在名为 value 的参数中传递给 Set 属性过程。 End Set
- 终止 Set 属性过程。 End Property
- 终止 Property 定义。
attrlist 部分中的每个属性具有以下语法和组成部分:
attrname [({ attrargs | attrinit })]
attrlist 部分
-
attrname
- 必选。特性名。必须是有效的 Visual Basic 标识符。 attrargs
- 可选。该特性的定位参数列表。多个参数以逗号分隔。 attrinit
- 可选。该特性的字段或属性初始值设定项列表。多个初始值设定项以逗号分隔。
备注
在属性赋值期间,Visual Basic .NET 会将参数传递给 Set 块。如果没有为 Set 提供参数,则集成开发环境 (IDE) 将提供一个名为 Value 的参数。该参数包含当调用 Set 块时赋给属性的项的内容。参数的内容通常存储在私有局部变量中,每当调用 Get 块时都会返回该内容。
属性的声明确定用户可以对该属性执行的操作:
- 如果使用 ReadOnly 修饰符,则属性称为“只读属性”,并且必须只具有 Get...End Get 块。因此,用户只能检索该属性的值。如果用户试图给该属性赋值,将引发错误。
- 如果使用 WriteOnly 修饰符,则属性称为“只写属性”,并且必须只具有 Set...End Set 块。这使用户可以将值存储到该属性。如果用户试图引用该属性,将引发错误,给该属性赋值的情况除外。
- 如果既没有使用 ReadOnly 修饰符也没有使用 WriteOnly 修饰符,那么属性必须既具有 Set...End Set 块,又具有 Get...End Get 块。该属性称为读写属性。
示例
下面的示例声明类中的一个属性。
Class Class1 ' Define a local variable to store the property value. Private PropertyValue As String ' Define the property. Public Property Prop1() As String Get ' The Get property procedure is called when the value ' of a property is retrieved. Return PropertyValue End Get Set(ByVal Value As String) ' The Set property procedure is called when the value ' of a property is modified. ' The value to be assigned is passed in the argument to Set. PropertyValue = Value End Set End Property End Class