Set 语句 (Visual Basic)

声明用于 Set 向属性赋值的属性过程。

语法

[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]  
    [ statements ]  
End Set  

部件

attributelist
可选。 请参阅 属性列表

accessmodifier
对于此属性中最多一个 GetSet 语句,可选。 可以是以下值之一:

请参阅 Visual Basic 中的 Access 级别

value
可选。 包含属性的新值的参数。 如果未指定(即参数列表不存在或为空),则定义一个名为 value 隐式参数。 此隐式参数的数据类型是声明此 Set 语句的属性的数据类型。

datatype
如果 value 存在且 Option StrictOn.,则为必需项。 如果未 value 提供,则不能存在。 参数的 value 数据类型。 指定的数据类型必须与声明此 Set 语句的属性的数据类型相同。

statements
可选。 调用属性过程时 Set 运行的一个或多个语句。

End Set
必填。 终止属性过程的定义 Set

注解

除非属性被标记ReadOnly,否则每个属性都必须有一个Set属性过程。 该过程 Set 用于设置属性的值。

当赋值语句提供要存储在属性中的值时,Visual Basic 会自动调用属性 Set 的过程。

Visual Basic 在属性分配期间将 Set 参数传递给过程。 如果未提供参数 Set,集成开发环境(IDE)将使用一个名为 value的隐式参数。 该参数保存要分配给属性的值。 通常,在私有局部变量中存储此值,并在调用过程时 Get 返回该值。

属性声明的正文只能包含 Property 语句End Property语句之间的属性GetSet过程。 它不能存储除这些过程以外的任何内容。 具体而言,它无法存储属性的当前值。 必须将此值存储在属性外部,因为如果将该值存储在任一属性过程中,则其他属性过程无法访问它。 通常的方法是在与属性相同的级别声明的 Private 变量中存储值。 必须定义 Set 它所应用到的属性内的过程。

该过程 Set 默认为其包含属性的访问级别,除非 accessmodifier 在语句中使用 Set

规则

  • 混合访问级别。 如果要定义读写属性,可以选择为 GetSet 过程指定不同的访问级别,但不能同时指定两者。 如果执行此作,过程访问级别必须比属性的访问级别更严格。 例如,如果声明Friend属性,则可以声明过程Private,但不能Public声明Set过程。

    如果要定义属性 WriteOnly ,该过程 Set 表示整个属性。 不能声明不同的访问级别 Set,因为这将为属性设置两个访问级别。

行为

  • 从属性过程返回。 Set当过程返回到调用代码时,执行将继续遵循提供要存储的值的语句。

    Set 属性过程可以使用 Return 语句Exit 语句返回。

    Exit PropertyReturn语句导致立即退出属性过程。 任意数量的 Exit Property 语句 Return 都可以出现在过程中的任意位置,并且可以混合 Exit PropertyReturn 语句。

示例:

以下示例使用 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

另请参阅