[VB.NET]VB 10.0 Auto-Implemented Properties

Introduction

Auto-Implemented Properties是VB.NET 10.0的特色之一。讓我們在撰寫屬性時只需短短一行即可,其細部的私有欄位與Get、Set區塊都將由編譯器在編譯時幫我們自動產生。可簡化屬性的撰寫,加速程式撰寫速度。

Support

  • VB 10.0 or latter

Auto-Implemented Properties

在以往我們要建立一個屬性時,我們通常會建立個私有欄位用來儲存屬性的值。並會利用Property關鍵字設定屬性區塊,在Get、Set區塊撰寫取值與設值的程式碼。就像是下面這樣:


Private _name As String

Property Name As String
    Get
        Return _name
    End Get
    Set(ByVal value As String)
        _name = value
    End Set
End Property</pre></div><p> </p><p>透過VB.NET 10.0的Auto-Implemented Properties功能,我們可以將屬性的撰寫給簡化。像是上面的例子可簡化為像下面這樣:</p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:636f2abe-f420-46bd-a9e4-5ced6d93ac70" class="wlWriterEditableSmartContent"><pre class="vb:nocontrols" name="code">

Property Name As String

短短的一行就可以取代本來冗長的程式,是不是很方便呢?除此之外,Auto-Implemented Properties也可以利用變數初始器來設定屬性的預設值。就像:


Property Name As String = “Larry”

若是使用較為複雜的型別也可以


Property SupplierList() As New List(Of Supplier)
Property OrderList() As New List(Of Order) With {.Capacity = 100}

也可以用在介面屬性的實作上


Property Name() As String Implements ICustomer.Name

注意事項

1.不支援ReadOnly關鍵字

若在Auto-Implemented Properties前面加上ReadOnly關鍵字


ReadOnly Property Name() As String

則編譯器會顯示錯誤

image

2.不支援WriteOnly關鍵字

若在Auto-Implemented Properties前面加上WriteOnly關鍵字


WriteOnly Property Name() As String

則編譯器會顯示錯誤

image

3.不支援帶參數的屬性

若在Auto-Implemented Properties設定參數


Property Items(ByVal idx As Integer) As String

則編譯器會顯示錯誤

image

4.不支援索引器

由於無法支援帶參數的屬性,自然無法支援索引器。