物件和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 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這...