Property 语句
声明用于存储和检索属性值的属性名称和属性过程。
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
[ <attributelist> ] [ accessmodifier ] Get
[ statements ]
End Get
[ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
[ statements ]
End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
部件
术语 |
定义 |
attributelist |
可选。应用于此属性或者 Get 或 Set 过程的特性列表。请参见特性列表。 |
Default |
可选。指定此属性是定义它的类或结构的默认属性。默认属性必须接受参数,并且不必指定属性名即可设置和检索默认属性。如果将属性声明为 Default,则不能对属性及其属性过程使用 Private。 |
accessmodifier |
Property 语句以及 Get 和 Set 语句之一(且只能是这两条语句中的一条)的可选项。可以是如下内容之一: 请参见 Visual Basic 中的访问级别。 |
propertymodifiers |
可选。可以是如下内容之一:
|
Shared |
可选。请参见 Shared (Visual Basic)。 |
Shadows |
可选。请参见 Shadows (Visual Basic)。 |
ReadOnly |
可选。请参见 ReadOnly (Visual Basic)。 |
WriteOnly |
可选。请参见 WriteOnly (Visual Basic)。 |
Iterator |
可选。迭代器参见。 |
name |
必需。属性的名称。请参见 已声明的元素名称 (Visual Basic)。 |
parameterlist |
可选。局部变量名列表,它们表示此属性的参数及 Set 过程可能具有的其他参数。请参见 参数列表 (Visual Basic)。 |
returntype |
如果 OptionStrict 为 On 则需要。此属性返回值的数据类型。 |
Implements |
可选。指出此属性实现一个或多个属性,每个属性均在由此属性的包含类或结构实现的接口中定义。请参见 Implements 语句。 |
implementslist |
如果提供了 Implements 则需要。将实现的属性列表。 implementedproperty [ , implementedproperty ... ] 每个 implementedproperty 均有下列语法和部分: interface.definedname
组成部分说明
interface 必需。此属性的包含类或结构实现的接口名称。
definedname 必需。在 interface 中定义属性时所用的名称。
|
Get |
可选。如果属性标记为 WriteOnly,则为必需项。启动用于返回属性值的 Get 属性过程。 |
statements |
可选。在 Get 或 Set 过程中运行的语句块。 |
End Get |
终止 Get 属性过程。 |
Set |
可选。如果属性标记为 ReadOnly,则为必需项。启动用于存储属性值的 Set 属性过程。 |
End Set |
终止 Set 属性过程。 |
End Property |
结束此属性的定义。 |
备注
Property 语句引入了属性声明。属性可以有 Get 过程(只读)、Set 过程(只写)或同时有两个过程(读写)使用自动实现的属性时,可以省略 Get 和 Set 过程。有关更多信息,请参见自动实现的属性 (Visual Basic)。
只能在类级使用 Property。这意味着属性的“声明上下文”必须是类、结构、模块或接口,不能是源文件、命名空间、过程或块。有关更多信息,请参见声明上下文和默认访问级别 (Visual Basic)。
默认情况下,属性使用公共访问。您可以在 Property 语句上使用访问修饰符调整属性的访问级别,还可以将其中一个属性过程调整到更为严格的访问级别。
在属性赋值期间,Visual Basic 会将参数传递给 Set 过程。如果没有为 Set 提供参数,则集成开发环境 (IDE) 将使用一个名为 value 的隐式参数。此参数容纳要赋给属性的值。通常在私有局部变量中存储此值,并在调用 Get 过程时返回它。
规则
**混合访问级别。**如果定义一个读写属性,则可以根据需要为 Get 或 Set 过程指定不同的访问级别,但不能同时为两者这样做。否则,过程访问级别在限制性上必须比属性的访问级别更高。例如,如果属性被声明为 Friend,则可以将 Set 过程声明为 Private,但不能声明为 Public。
如果定义 ReadOnly 或 WriteOnly 属性,则单个属性过程(分别对应 Get 或 Set)表示整个属性。因此不能为此类过程声明不同的访问级别,因为这样做会为属性设置两个访问级别。
**返回类型。**Property 语句可以声明它返回的值的数据类型。可以指定任何数据类型或枚举、结构、类或接口的名称。
如果不指定 returntype,属性将返回 Object。
**实现。**如果此属性使用 Implements 关键字,包含类或结构的 Class 或 Structure 语句后面必须紧跟着 Implements 语句。Implements 语句必须包含在 implementslist 中指定的每个接口。不过,接口定义 Property 时所用的名称(在 definedname 中)不必与此属性的名称(在 name 中)相同。
行为
**从属性过程返回。**当 Get 或 Set 过程返回到调用代码时,继续执行调用它的语句之后的语句。
使用 Exit Property 和 Return 语句可以立即从属性过程中退出。过程中的任何地方可以出现任意数量的 Exit Property 和 Return 语句,而且可以混用 Exit Property 和 Return 语句。
**返回值。**要从 Get 过程返回某个值,可以将该值赋给属性名,或者将其包含在 Return 语句中。下面的示例将该返回值赋给属性名 quoteForTheDay,然后使用 Exit Property 语句返回。
Private quoteValue As String = "No quote assigned yet."
ReadOnly Property quoteForTheDay() As String Get quoteForTheDay = quoteValue Exit Property End Get End Property
如果使用 Exit Property 但未给 name 赋值,则 Get 过程将返回属性数据类型的默认值。
Return 语句为 Get 过程的返回值赋值,同时退出该过程。下面的示例显示如何执行此项操作。
Private quoteValue As String = "No quote assigned yet."
ReadOnly Property quoteForTheDay() As String Get Return quoteValue End Get End Property
示例
下面的示例声明类中的一个属性。
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