Visual Studio 2010中的Visual Basic和C#語言
選擇一種編程語言是每一個程序員都要做的個人決定。這就好像對冰淇淋口味的選擇一樣。冰淇淋口味的選擇多多,但你最喜歡的口味只關系到你的個人偏好。
在Visual Studio 2010中,為了給程序員提供他們構(gòu)建出色軟件時所需要的所有工具而不用局限于他們所選擇的語言,我們從好幾個方面增強了我們最流行的兩種語言,Visual Basic和C#語言的功能。
Visual Basic
Visual Basic開發(fā)團隊為了讓開發(fā)人員可以用更少的代碼完成更多的任務,集中增加了和生產(chǎn)力相關的功能特性。Visual Basic客戶最常提出的要求是在大多數(shù)情況下能省去為代碼聲明分成多行時所需要添加的下劃線(“_”)。Visual Basic 10增加了隱式斷行的功能特性,能在大多數(shù)情況下不要求開發(fā)人員使用下劃線來斷行。
- Function Filter(
- ByVal customers As List(Of Customer),
- ByVal orderCount As Integer
- )
- Dim query =
- From c In customers
- Where c.Orders.Count >
- orderCount
- Select c
另一個新添加的和提高生產(chǎn)力有關的功能特性是自動實現(xiàn)屬性。有了自動實現(xiàn)屬性的功能,多行常規(guī)的屬性實現(xiàn)的代碼就可以用一行簡單的聲明代替。在加入該功能特性之前,屬性聲明經(jīng)常如下所示:
- Private _FavoriteFlavor As String = "Butter Pecan"
- Property FavoriteFlavor() As String
- Get
- Return _FavoriteFlavor
- End Get
- Set(ByVal value As String)
- _FavoriteFlavor = value
- End Set
- End Property
- Private _FlavorList As New List(Of Flavor)
- Property FlavorList() As List(Of Flavor)
- Get
- Return _FlavorList
- End Get
- Set(ByVal value As String)
- _FlavorList = value
- End Set
- nd Property
現(xiàn)在,屬性聲明能用簡單的多得方法實現(xiàn):
- Property FavoriteFlavor As String = "Butter Pecan"
- Property FlavorList As New List(Of Flavor)
集合初始化和數(shù)組Literal也變得更加簡單?,F(xiàn)在集合能在它們被聲明的時候就被初始化,而數(shù)組Literal的類型能交由編譯器來識別。
- Dim toppings = New List(Of String) From
- {
- "sprinkles",
- "chocolate chips",
- "strawberries"
- }
- Dim cones = {"sugar cone", "waffle cone"} 'String()的類型被編譯器識別出來
現(xiàn)在,Visual Basic 10.0有了更好的lambda表達式支持。現(xiàn)在,Lambda表達式可以包含沒有返回值的表達式,就像下面sub關鍵詞所要表達的那樣:
- Array.ForEach(toppings, Sub(n) Console.WriteLine(n))
有時候,你會想在Lamdba表達式聲明中作些更復雜的工作。Visual Basic 10.0支持多行的Lamdba表達式。就像在常規(guī)Lambda表達式中一樣,編譯器將盡可能識別變量和返回類型。
- Dim doubleDown = Function(n As String)
- If n.StartsWith("s") Then
- Return "extra " & n
- Else
- Return n
- End If
- End Function
在Visual Basic 10.0中,和Python及Ruby語言等動態(tài)語言的互通操作也變得更加簡單。比如,下面的代碼片斷調(diào)用了一個Python庫“math.ph”中的方法:
- Dim mathLib As Object = python.UseFile("math.py")
- Dim firstNumber = 44.2
- Dim secondNumber = 9.5
- mathLib.PowerOf(firstNumber, secondNumber)
C#語言
C# 4.0主要增強了與動態(tài)編程語言的互通性并改進了Office編程性。動態(tài)查找是C# 4.0的一個新功能,能讓你用同樣的方法使用和操作IronPython、IronRuby、JScript、HTML DOM以及標準.NET庫中的對象,不管該對象從哪里獲得。命名參數(shù)和可選參數(shù),以及對COM客戶端支持的改進等語言方面的增強讓那些和Office API打交道的C#開發(fā)人員與Visual Basic開發(fā)人員有同樣的美妙體驗。
在你的代碼中加入新的dynamic關鍵詞能讓它的類型在運行時被動態(tài)解析而非編譯時的靜態(tài)解析。這讓動態(tài)語言用一種C#編程員覺得自然的方式在C#語言中暴露他們的對象:
- dynamic dynamicObject = GetDynamicObjectFromRuby();
- dynamicObject.Foo(7);
- dynamicObject.Property = "Property value";
- dynamicObject[0] = "Indexed value";
可選方法參數(shù)對Visual Basic和C++的編程員來說再熟悉不過。現(xiàn)在C#編程員同樣可以使用這種參數(shù)??蛇x參數(shù)在方法簽名中與一個默認值一同聲明,如下所示:
- private void CreateNewStudent(string name, int currentCredits = 0, int year = 1)
上面這個方法可以用下面任意一種方法調(diào)用:
- CreateNewStudent("Chloe");
- CreateNewStudent("Zoe", 16);
- CreateNewStudent("Joey", 40, 2);
如果要省略currentCredit參數(shù)但指明year參數(shù),可以使用新加入的命名參數(shù)功能特性(如高亮的代碼所示)。下面所有的調(diào)用都是合法的:
- CreateNewStudent("Jill", year: 2);
- CreateNewStudent(name: "Bill", currentCredits: 30, year: 2);
- CreateNewStudent("Will", currentCredits: 4);
即使不用可選參數(shù),命名參數(shù)同時也是一種用來對你現(xiàn)有方法編寫自定義調(diào)用的好方法。
學習更多
在VB功能特性站點和C#功能特性站點,你可以找到更多關于Visual Studio 2010在語言增強方面的內(nèi)容,并能下載到示例代碼。如果你想試試這些新的功能特性,可以下載并安裝Visual Studio Beta 1,然后加入到我們的對話中來。
【編輯推薦】