Visual C 3 0 新特性概覽 2

2021-04-02 09:47:30 字數 2621 閱讀 1338

物件和collection初始化符

c# 3.0被希望來允許你包含乙個初始化符,從而指定乙個新建立的物件或者collection的初始值。這使得你能夠一步結合宣告和初始化。

舉例來說,你可以這樣定義coordinate類:

public class coordinate

你然後可以使用乙個物件初始化符來宣告和初始化乙個coordinate物件,就像這樣:

var mycoord = new coordinate ;

也許你要問,為什麼不要像下面這樣做呢?

var mycoord = new coordinate(0, 0) ;

類似的,在c#3.0裡你可以輕鬆的用一種更加簡潔的方式給collection賦值,如下的c# 2.0的**:

list

animals = new list

();

animals.add("monkey");

animals.add("donkey");

animals.add("cow");

animals.add("dog");

animals.add("cat");

可以縮短為:

list

animals = new list

;

lambda表示式:匿名方法的濃咖啡

c# 1.x允許你在方法裡寫**段,你可以輕鬆的使用委託(delegate)來呼叫。委託無疑是有用的,並且可以在框架裡任意使用,但是在很多例項裡你必須為了使用它而宣告乙個方法或者乙個類。因此,為了給你乙個更加容易和簡潔的編碼方式,c# 2.0允許你使用匿名方法替換標準呼叫到委託。如下**可以在.net1.1或者更早的版本看到:

class program

void sayhi()

}

在c# 2.0,使用匿名方法,你必須這樣重寫**:

class program

;mydelegate();

}}

儘管匿名方法對基於方法的委託呼叫更進了一步,但是lambda表示式允許你用更加簡潔,功能性的格式寫匿名方法。

class program

}

儘管lambda表示式顯得更加簡潔,實際上他們也是乙個匿名方法的功能性超集。特別的,lambda表示式提供了如下的額外的功能:

·它們允許引數型別是被推斷的。匿名方法要求你必須清楚的陳述每個型別的狀態。

·它們可以支援查詢表示式或c#語句。

·它們可以被看作使用表示式樹的資料。這是不能用匿名方法來做的。

查詢表示式

這個特性使得你可以在c#中使用sql類似風格的語句,也被稱作linq(語言整合查詢)。

舉例來說,你可以這樣描述你的資料:

ublic class coordinate

在c#裡,你可以像下面一樣輕鬆的宣告乙個資料庫表的邏輯等同式:

// use object and collection initializers

list

coords = ... ;

現在你的資料可以作為乙個collection來實現 ienumerable

,你可以輕鬆的像如下方式查詢資料:

var filteredcoords =

from c in coords

where x == 1

select (c.x, c.y)

在以上sql風格的格式中,"from"、"where"和"select"是查詢表示式,用到了c# 3.0的一些特性如匿名型別,擴充套件方法,隱式型別本地變數等。這樣,你可以使用sql風格的格式,將無聯絡的資料整合一起來工作。

每個查詢表示式實際上轉變為乙個c#的呼叫,如:

where x == 1

將會轉換為:

coords.where(c =>c.x == 1)

你可以看到,這個看上去很像乙個可怕的lambda表示式和擴充套件方法。c# 3.0還有其他很多關於它們的查詢表示式和規則。

表示式樹

c# 3.0包含了乙個新型別,允許表示式能夠當作執行時的資料使用。這個型別,system.expressions.expression

,只是乙個記憶體中乙個lambda表示式的重新表達。結果是你的**可以在執行時修改和檢查lambda表示式。

如下是乙個表示式樹的例子:

expression

filter = () =>console.writeline("hiya!!") ;

使用如上的表示式樹的方法,你可以使用過濾器變數中的各種屬性來檢查樹的內容。

結束語

c# 3.0提供了一些新的特性,使得你可以更輕鬆的完成乙個程式設計師和架構設計師的工作,同時也保持了程式語言的嚴謹和清晰的結構。

c# 3.0目前還處於襁褓中,還將在未來的數月中長大,但是它所能改變的一切,緊靠其強大的後盾.net框架,它的體系結構和設計模式,值得你的關注。

Visual C 3 0 新特性概覽

在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這也是本文所討論的主要內容 隱式型別本地...

Visual C 3 0 新特性概覽

在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這也是本文所討論的主要內容 隱式型別本地...

Visual C 3 0 新特性概覽

visual c 3.0 新特性概覽 在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這...