在Beta 2中,.NET中的兩種旗艦語言——C#和Visual Basic各自的功能集合都已經確定。以前我們曾經介紹過只在VB中出現的特性,例如可變匿名類型和XML常量等。而今天本文則要介紹一些只在C#中出現的特性。
第一個特性是用於創建數據類的一個語法上的便捷之處。借助於自動屬性(Automatic Properties)語法,C#開發者無需書寫任何重復的代碼即可容易地創建屬性。
public int X { get; private set; }
上面這句代碼創建了一個名為X的屬性,該屬性的getter是公有的,setter是私有的。在使用上述語法時,編譯器將自動生成一個私有字段並與上述getter和setter關聯起來。
雖然這樣的自動屬性語法看上去有些類似於公有字段,不過它卻有著一些值得稱道的優勢。首先,很多內建的類型(比如列表和數據網格)只能綁定到屬性上。從長遠角度考慮,使用屬性也能夠讓開發者在需要的時候為其添加更加復雜的邏輯,而同時卻並不需要改變類型的公共接口。
另一個C#中的特性就是集合初始化器。
var mystrings = new List { "Alice", "Bob", "Charlie" };.
借助於類似數組初始化器的語法,上述代碼將自動調用該集合的Add方法將達括號中的每一個條目添加到集合中。當然,這個特性並不能夠應用於任何對象上,可使用該特性的對象應該提供一個Add方法,且該Add方法接受一個參數。
上面的這些示例程序均來自於Jomo Fisher的文章The Least You Need to Know about C# 3.0。
需要注意的是,關於閉包和lambada表達式等令人激動的特性,Visual Basic只能夠支持單行的匿名方法。而C#則更為強大——借助於新的委托語法,C#將能夠支持多行的匿名方法。