VS 2010 和 .NET 4.0 系列之《 VB 2010中的自動屬性,集合初始器,以及隱含程式碼連貫支援》篇

  • 23027
  • 0
  • 2011-07-02

摘要:VS 2010 和 .NET 4.0 系列之《 VB 2010中的自動屬性,集合初始器,以及隱含程式碼連貫支援》篇

【原文位址】 Automatic Properties, Collection Initializers, and Implicit Line Continuation support with VB 2010
【原文發表日期】 Monday, April 05, 2010 11:56 PM

除了寫部落格外,我現在還使用Twitter發短貼和共享連結。請通過twitter.com/scottgu跟隨我。

這是我針對即將發佈的VS 2010 和 .NET 4所撰寫的 文章系列的第十八篇。

幾天前,我在部落格中對C# 4.0中的2個新語言特性做了介紹: 《C# 4 中的可預設參數和具名實參 》。

今天,我將對新加到VS 2010的VB中的幾個我最喜愛的新特性做些介紹:自動實現的屬性,集合初始器,以及隱含程式碼行連貫支援。

自動實現的屬性 (Auto-implemented Property)

在VB 2010之前,使用VB在一個類中實現屬性時要求你明確地宣告屬性,以及宣告一個保存其值的儲存欄位變數。

例如,下面的程式碼示範了使用VB 2008實現一個「Person」 類別,該類別提供了2個公開的屬性,「Name」 和 「Age」:

image

雖然像上面那樣明確地宣告屬性提供了最大的彈性,但在你只需對一個欄位進行儲存/擷取時,我總是發現編寫這型別的樣板式(boiler-plate)get/set程式碼枯燥無味。你可以 使用VS的程式碼片段特性幫助自動生成這樣的程式碼,但它還是生成了一堆感覺是多餘的程式碼。 C# 2008引進了一個叫做自動屬性的很酷的語言特性,在屬性只是由欄位來擔當的情形下,能夠幫助減少不少程式碼。VB 2010現在也支援這個特性了。

使用VB 2010自動實現的屬性特性的話,我們只要使用下面這個程式碼就能實現Person類別:

image

當你宣告一個自動實現的屬性時,VB編譯器會自動建立一個私有的欄位用於保存屬性值,還為你生成相應的Get/Set方法。就像你在上面看到的那樣,程式碼極簡,可讀性極好。

如果你想要的話,句法還支援使用預設值來初始化屬性:

image

你可以在這個MSDN網頁上瞭解VB 2010的自動屬性支援的詳情。

集合初始器

VB 2010現在也支援使用集合初始器來輕鬆地建立一個集合,填充以一堆起始值。 你可以通過宣告一個集合變數,然後使用From 關鍵詞,繼以大括號 { } ,在其中包含要添加到集合中去的起始值列表,來識別一個集合初始器。

下面是一個程式碼例子,我用了新的集合初始器特性,用2個Person物件填充了一個「Friends」 Person物件列表,然後將其繫結到一個GridView控制項,來顯示在網頁上:

image

你可以在這個MSDN網頁上瞭解VB 2010的集合初始器支援的詳情。

隱含程式碼連貫支援(Implicit Line Continuation Support)

傳統上來說,當VB中的一個語句被分割成多行的時候,你需要使用續行下劃線字元 (_) 來表示那個語句還不完整。

例如,在VB 2008中,下面的LINQ查詢需要在每行的結尾附加 「_」 來表示查詢還不完整:

image

VB 2010編譯器和程式碼編輯器現在添加了被稱為「隱含程式碼連貫支援」的特性,意味著它善於自動檢測連貫場景了,其結果是,在許多,許多場景中你不再需要明確表示語句的連貫了。這意味著,在VB 2010中,我們現在可以不用「_」編寫上述程式碼了:

image

隱含程式碼連貫支援特性在VB中編輯XML明文(XML Literals)時也工作(非常酷)。

你可以在這個MSDN網頁上瞭解VB 2010的隱含程式碼連貫支援的詳情以及該特性支援的許多場景(向下捲動到「Implicit Line Continuation」那部分看詳情)。

結語

上面的3個VB語言特性是VB 2010中眾多新語言和程式碼編輯器特性的幾個而已,訪問該網站以瞭解VB 2010發佈中的其他一些語言特性的詳情。

也請訂閱VB開發團隊的部落格,通過他們定期發表的部落格文章進一步學習以及瞭解近況。

希望本文對你有所幫助,

Scott