详解Visual Studio 中自动执行属性
在Visual Studio 中有不少特性能帮助大家更好更快的完成开发工作本文将介绍的是自动执行属性
自动执行的属性能够让你迅速指定一个类的属性不用写“Get”和“Set”这个属性的代码当你为自动执行的属性写代码的时候Visual Basic编译器自动创建一个私有字段存储这个属性的变量此外还创建相关的“Get”和“Set”步骤
采用自动执行的属性一个属性(包括一个默认值)可以在一个单个的行中声明下面的例子显示了三个属性的声明
Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M" "T" "W"}
Public Property ID As New Guid()
一个自动执行的属性相当于一个属性值存储在一个私有字段中的属性下面代码例子显示一个自动执行属性
Property Prop As String = "Empty"
下面的代码例子显示以前自动执行属性例子的相等的代码
Private _Prop As String = "Empty"
Property Prop As String
Get
Return _Prop
End Get
Set(ByVal value As String)
_Prop = value
End Set
End Property
支持字段
当你声明一个自动执行属性的时候Visual Basic自动创建一个名为“支持字段”的隐藏的私有字段 以容纳这个属性的值这个支持字段名称是前面有一个加下划线(_)的自动执行的属性名称例如如果你声明一个自动执行的属性命名的ID这个支持字段就命名为_ID如果你包含一个名称也是_ID的你的类的一个编号你就制造了一个命名沖突Visual Basic将报告一个编译器错误
这个支持字段还有下面的特点
* 访问这个支持字段修饰符总是私有的方式甚至当属性本身有不同的访级别(如公共的)的时候也是如此
* 如果属性标记为共享这个支持字段也是共享的
* 为这个属性指定的属性不适用于这个支持字段
支持属性可以从这个类中的代码访问以及从Watch window等调试工具访问然而这个支持字段在IntelliSense(智能感应)字补全列表中不显示出来
初始化一个自动执行属性
能够用于初始化一个字段的任何表达式对于初始化一个自动执行属性都是合法的当你初始化一个自动执行属性的时候这个表达式将被评估并且传送到这个属性的Set步骤下面的代码例子显示包括初始值的一些自动执行的属性
Property FirstName As String = "James"
Property PartNo As Integer =
Property Orders As New List(Of Order)()
你不能声明一个自动执行的属性作为一个Structure(结构)的一个成员如果它标记为共享的你才能初始化这个自动执行属性
当你声明一个自动执行属性作为一个组数的时候你可以指定明确的组数边界然而你可以使用一个组数初始化程序提供一个值如下面的例子所示
Property Grades As Integer() = { }
Property Temperatures As Integer() = New Integer() { }需要标准语法的属性定义
自动执行的属性是很方便的支持许多编程情况然而有一些情况你不能使用自动执行的属性必须使用标准的或者扩展的属性语法
如果你要做下列之情之一你必须使用属性定义语法
* 向一个属性的Get或者Set步骤增加代码如在Set步骤中增加验证输入值的代码例如你也许在设定这个属性值之前验证一个字符串这个字符串显示一个包含要求的数字数量的电话号码
* 为Get和Set步骤指定不同的访问性例如你也许要Set步骤是私有的让Get步骤是公共的
* 创建只写或只读的属性
* 使用参数化属性(包括默认属性)你必须声明一个扩展的熟悉以便为这个属性指定一个参数或者为Set步骤指定一个额外的参数
* 在支持字段加入一个属性
* 为支持字段提供XML注释
扩展一个自动执行的属性
如果你必须要把一个自动执行的属性转变为包含一个Get或者Set步骤的扩展的属性Visual Basic代码编辑器能够自动生成Get和Set步骤以及这个属性的“End Property”(结束属性)声明如果你把这个光标放在属性声明后面的空白行中输入一个G(代表Get)或者一个S(代表Set)并且按下 ENTER键这个代码就生成了当你在属性声明结束时按下ENTER键的时候Visual Basic代码编辑器自动生成Get或者Set步骤的只读和只写属性