Set 语句 (Visual Basic)
声明用于为某个属性赋值的 Set
属性过程。
语法
[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]
[ statements ]
End Set
组成部分
attributelist
可选。 请参阅特性列表。
accessmodifier
此属性中最多有一个 Get
和 Set
语句是可选的。 可以是以下值之一:
请参阅 Access levels in Visual Basic。
value
可选。 包含属性的新值的参数。 如果未给出(即参数列表不存在或为空),则定义一个名为 value
的隐式参数。 此隐式参数的数据类型是声明此 Set
语句的属性的数据类型。
datatype
如果存在 value
并且 Option Strict
为 On
,则为必需。 如果未给出 value
,则不存在。 value
参数的数据类型。 指定的数据类型必须与声明此 Set
语句的属性的数据类型相同。
statements
可选。 调用 Set
属性过程时运行的一个或多个语句。
End Set
必需。 终止 Set
属性过程的定义。
注解
每个属性都必须有一个 Set
属性过程,除非该属性被标记为 ReadOnly
。 Set
过程用于设置属性的值。
当赋值语句提供要存储在属性中的值时,Visual Basic 会自动调用属性的 Set
过程。
Visual Basic 在属性赋值期间将参数传递给 Set
过程。 如果不为 Set
提供参数,集成开发环境 (IDE) 将使用名为 value
的隐式参数。 该参数保存要赋予属性的值。 你通常将此值存储在私有局部变量中,并在调用 Get
过程时返回此值。
属性声明的正文只能包含 Property 语句与 End Property
语句之间的属性的 Get
和 Set
过程。 除了这些过程之外,不能存储任何其他内容。 特别是,它不能存储属性的当前值。 必须将此值存储在属性之外,因为如果你将其存储在任一属性过程中,另一个属性过程将无法访问它。 通常的方法是将值存储在与属性相同级别声明的私有变量中。 你必须在它适用的属性内定义一个 Set
过程。
除非你在 Set
语句中使用 accessmodifier
,否则 Set
过程默认为其包含属性的访问级别。
规则
混合访问级别。 如果要定义读写属性,则可以选择为
Get
或Set
过程指定不同的访问级别,但不能同时为这两个过程指定。 如果同时为这两个过程指定,则过程访问级别必须比属性的访问级别更严格。 例如,如果属性声明为Friend
,则可以将Set
过程声明为Private
,但不能声明为Public
。如果你正在定义一个
WriteOnly
属性,则Set
过程表示整个属性。 你不能为Set
声明不同的访问级别,因为这会为该属性设置两个访问级别。
行为
从 Property 过程中返回。 当
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