Property Statement
声明用于存储和检索属性值的属性名称和属性过程。
语法
[ <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
语句中至多出现一次。 可以是以下值之一:propertymodifiers
可选。 可以是以下值之一:
MustOverride Overrides
NotOverridable Overrides
Shared
可选。 请参阅 Shared。
Shadows
可选。 请参阅 Shadows。
ReadOnly
可选。 请参阅 ReadOnly。
WriteOnly
可选。 请参阅 WriteOnly。
Iterator
可选。 请参阅 Iterator。
name
必需。 属性的名称。 请参阅 Declared Element Names。
parameterlist
可选。 表示此属性参数的局部变量名称列表,以及
Set
过程的可能附加参数。 请参阅参数列表。returntype
如果
Option Strict
为On
,则是必需的。 此属性返回的值的数据类型。Implements
可选。 表示该属性实现了一个或多个属性,每个属性都在由该属性的包含类或结构实现的接口中定义。 请参阅 Implements 语句。
implementslist
如果提供
Implements
,则是必需的。 正在实现的属性的列表。implementedproperty [ , implementedproperty ... ]
每个
implementedproperty
都具有以下语法和部件:interface.definedname
组成部分 说明 interface
必需。 此属性的包含类或结构所实现的接口的名称。 definedname
必需。 在 interface
中用于定义属性的名称。Get
可选。 如果属性被标记为
ReadOnly
,则为必需。 启动用于返回属性值的Get
属性过程。 该Get
语句不用于 自动实现的属性。statements
可选。 在
Get
或Set
过程中运行的语句块。End Get
终止
Get
属性过程。Set
可选。 如果属性被标记为
WriteOnly
,则为必需。 启动用于存储属性值的Set
属性过程。 该Set
语句不用于 自动实现的属性。End Set
终止
Set
属性过程。End Property
终止此属性的定义。
注解
Property
语句引入了属性的声明。 一个属性可以有一个 Get
过程(只读)、一个 Set
过程(只写)或两者都有(读写)。 使用自动实现的属性时,可以省略 Get
该过程 Set
。 有关详细信息,请参阅 自动实现的属性。
你只能在类级别使用 Property
。 这意味着属性的声明上下文必须是类、结构、模块或接口,不能是源文件、命名空间、过程或块。 有关详细信息,请参阅声明上下文和默认访问级别。
默认情况下,属性使用公共访问。 你可以使用 Property
语句上的访问修饰符来调整属性的访问级别,并且可以选择将其属性过程之一调整为更具限制性的访问级别。
Visual Basic 在属性赋值期间将参数传递给 Set
过程。 如果不为 Set
提供参数,集成开发环境 (IDE) 将使用名为 value
的隐式参数。 此参数保存要赋予属性的值。 你通常将此值存储在私有局部变量中,并在调用 Get
过程时返回此值。
规则
混合访问级别。 如果要定义读写属性,则可以选择为
Get
或Set
过程指定不同的访问级别,但不能同时为这两个过程指定。 如果同时为这两个过程指定,则过程访问级别必须比属性的访问级别更严格。 例如,如果属性声明了Friend
,则可以声明Set
过程Private
,但不能声明Public
。如果你正在定义一个
ReadOnly
或WriteOnly
属性,则单个属性过程(分别是Get
或Set
)表示所有属性。 你不能为此类过程声明不同的访问级别,因为这会为该属性设置两个访问级别。返回类型。
Property
语句可以声明它返回的值的数据类型。 你可以指定任何数据类型或枚举、结构、类或接口的名称。如果不指定
returntype
,则属性返回Object
。实现。 如果此属性使用
Implements
关键字,则包含的类或结构必须有一个Implements
语句,并且紧跟在Class
或Structure
语句后面。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
如果你在没有为
name
赋值的情况下使用Exit Property
,则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