声明用于 Set
向属性赋值的属性过程。
语法
[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]
[ statements ]
End Set
部件
attributelist
可选。 请参阅 属性列表。
accessmodifier
对于此属性中最多一个 Get
和 Set
语句,可选。 可以是以下值之一:
请参阅 Visual Basic 中的 Access 级别。
value
可选。 包含属性的新值的参数。 如果未指定(即参数列表不存在或为空),则定义一个名为 value
隐式参数。 此隐式参数的数据类型是声明此 Set
语句的属性的数据类型。
datatype
如果 value
存在且 Option Strict
为 On
.,则为必需项。 如果未 value
提供,则不能存在。 参数的 value
数据类型。 指定的数据类型必须与声明此 Set
语句的属性的数据类型相同。
statements
可选。 调用属性过程时 Set
运行的一个或多个语句。
End Set
必填。 终止属性过程的定义 Set
。
注解
除非属性被标记ReadOnly
,否则每个属性都必须有一个Set
属性过程。 该过程 Set
用于设置属性的值。
当赋值语句提供要存储在属性中的值时,Visual Basic 会自动调用属性 Set
的过程。
Visual Basic 在属性分配期间将 Set
参数传递给过程。 如果未提供参数 Set
,集成开发环境(IDE)将使用一个名为 value
的隐式参数。 该参数保存要分配给属性的值。 通常,在私有局部变量中存储此值,并在调用过程时 Get
返回该值。
属性声明的正文只能包含 Property 语句和End Property
语句之间的属性Get
和Set
过程。 它不能存储除这些过程以外的任何内容。 具体而言,它无法存储属性的当前值。 必须将此值存储在属性外部,因为如果将该值存储在任一属性过程中,则其他属性过程无法访问它。 通常的方法是在与属性相同的级别声明的 Private 变量中存储值。 必须定义 Set
它所应用到的属性内的过程。
该过程 Set
默认为其包含属性的访问级别,除非 accessmodifier
在语句中使用 Set
。
规则
混合访问级别。 如果要定义读写属性,可以选择为
Get
或Set
过程指定不同的访问级别,但不能同时指定两者。 如果执行此作,过程访问级别必须比属性的访问级别更严格。 例如,如果声明Friend
属性,则可以声明过程Private
,但不能Public
声明Set
过程。如果要定义属性
WriteOnly
,该过程Set
表示整个属性。 不能声明不同的访问级别Set
,因为这将为属性设置两个访问级别。
行为
从属性过程返回。
Set
当过程返回到调用代码时,执行将继续遵循提供要存储的值的语句。Set
属性过程可以使用 Return 语句 或 Exit 语句返回。和
Exit Property
Return
语句导致立即退出属性过程。 任意数量的Exit Property
语句Return
都可以出现在过程中的任意位置,并且可以混合Exit Property
和Return
语句。
示例:
以下示例使用 Set
语句设置属性的值。
Class propClass
Private propVal As Integer
Property Prop1() As Integer
Get
Return propVal
End Get
Set(ByVal value As Integer)
propVal = value
End Set
End Property
End Class