日期:2010-02-15  浏览次数:20597 次

详解Visual Studio 2010中自动执行属性

Visual Studio 2010中,有不少特性能帮助大家更好,更快的完成开发工作。本文将介绍的是自动执行属性。

自动执行的属性能够让你迅速指定一个类的属性,不用写“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 Prop2 As String = "Empty" 

下面的代码例子显示以前自动执行属性例子的相等的代码。

Private _Prop2 As String = "Empty"   
Property Prop2 As String   
Get   
Return _Prop2   
End Get   
Set(ByVal value As String)   
_Prop2 = 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 = 44302  
Property Orders As New List(Of Order)(500) 

你不能声明一个自动执行的属性作为一个Structure(结构)的一个成员。如果它标记为共享的,你才能初始化这个自动执行属性。

当你声明一个自动执行属性作为一个组数的时候,你可以指定明确的组数边界。然而,你可以使用一个组数初始化程序提供一个值,如下面的例子所示:

Property Grades As Integer() = {90, 73}  
Property Temperatures As Integer() = New Integer() {68, 54, 71}
需要标准语法的属性定义

自动执行的属性是很方便的,支持许多编程情况。然而,有一些情况你不能使用自动执行的属性,必须使用标准的或者扩展的属性语法。

如果你要做下列之情之一,你必须使用属性定义语法:

  • 向一个属性的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步骤的只读和只写属性。