1.隱型局部變量
C# 3.0引入了一個叫做“var”的新關鍵字。這個關鍵字允許開發者建立一個變量,但不必明確它的類型。例如,用var說明一個字符串,就像這樣:
var myData = "This is my data";
注意,這裡並沒有提到myData變量是一個字符串,而C# 2.0卻要求這一點。
雖然var允許您建立隱含的類型,它並沒有降低C#濃厚的類型特征。var關鍵字只有在建立變量時有用,一旦您建立變量並且確定它的類型以後,就不能再用var來改變一個變量的類型。
例如,這段代碼沒有作用:
var myDate = DateTime.Now;
myDate = "Hello.";
使用var關鍵字還會產生一個有趣的結果,它可以幫助開發者減少建立變量時的代碼輸入。例如,在C# 2.0中建立一個Customer對象,需要輸入以下代碼:
Customer myCustomer = new Customer();
使用新的var關鍵字,則只要輸入:
var myCustomer = new Customer();
var關鍵字的另一個特點在於,使用它可以避免改變一個返回某個類型對象的方法調用。例如,在C# 2.0中,如果您需要調用一個返回Customer對象的方法,您應該編寫以下代碼:
Customer myCustomer = GetByName("Zach");
如果某個時候GetByName方法返回一個不是Customer的對象,這段代碼就無法編譯。但是,如果應用var關鍵字,您就不用擔心GetByName返回的對象類型。
var myData = GetByName("Zach");
現在,因為應用了var關鍵字,GetByName方法能夠進行改變,返回一個Person對象,這個方法調用也依然有效。
2.extension方法
在C#中,您不能繼承和擴充用訪問標識符標記為“封裝”的類型。但在C# 3.0中,extension方法允許您擴充任何類,甚至是標記為封裝的類。例如,如果希望添加一個NoSpaces()方法到字符串類中,我們要定義一個類似列表A中的extension方法。
列表A
namespaceMyExtensionMethods
{
public static class Extension
{
public static void NoSpaces(this string data)
{
return data.Replace(" ", "");
}
}
}