任何一個程式開發語言都在不斷的更新和變化,.net的2個主流語言c#和vb也不例外,在.net framework 3.5中它們的語法也得到了很多的改進。下面介紹其中的一部分:
1.自動屬性(Automatic Properties)在.net framework 2.0中如果我們要實現一個class的屬性,那麼我們可以這樣寫:
但是在基於.net framework 3.5的程式集中,我們可以寫很少的代碼來實現同樣的功能,如下,對時間的節省是很多的。
2.對象初始化(Object Initializers)
在上面的一個例子中如果我們要初始化一個新的Employee類的物件,那麼以前一般的寫法是:
而現在我們可以用一種比較流行的寫法來初始化這個物件,
比較一下,後一種方法在沒有對應帶參數的構造函數基礎上,僅僅用了一行代碼就完成了與前一種做法相同的功能實現。
3.集合初始化(Collection Initializers)
與物件初始化器相類似的,集合的初始化可以寫成這樣:
4.匿名類型(Anonymous Types)
匿名類型是C#和VB的方便語言特性(也可稱之 var 泛型),它允許開發人員在程式內簡單地定義沒有型別的變數,而不用在編譯階段中固定型態的變數,匿名類型在使用LINQ做查詢時,將可以應用在結果資料的動態轉換。
5. Lambda運算式
Lambda運算式是一種匿名函數式,它可以包含運算式和陳述式 (Statement),而且可以用來建立委派 (Delegate) 或運算式樹狀架構型別。此為匿名方法提供了更簡單的函數式的語法,也是為了配合編寫LINQ查詢運算式時變得更加靈活,因為它提供了一個非常緊湊而且安全的方式來編寫參數的傳遞,如下的程式碼中,p => p.Age == 25,就是一個lambda運算式,這句的作用是從lstEmps列表中獲取Age為25的一個集合(找出年齡為25歲的員工)。
Lambda運算式是一種匿名函數式,它可以包含運算式和陳述式 (Statement),而且可以用來建立委派 (Delegate) 或運算式樹狀架構型別。此為匿名方法提供了更簡單的函數式的語法,也是為了配合編寫LINQ查詢運算式時變得更加靈活,因為它提供了一個非常緊湊而且安全的方式來編寫參數的傳遞,如下的程式碼中,p => p.Age == 25,就是一個lambda運算式,這句的作用是從lstEmps列表中獲取Age為25的一個集合(找出年齡為25歲的員工)。
6.查詢語法(QuerySyntax)
查詢語法是使用標準的LINQ查詢運算符來表達查詢的一種簡化寫法,該語法能在密密麻麻的程式碼中增加開發者的可讀性和簡潔性。VS2008對查詢語法提供了完整的intellisense和編譯時檢查支援,同Lambda運算式中的例子,下面的查詢語法能完成相同的操作,並完成了按姓名降冪排列 (找出年齡為25歲的員工,按員工姓名降冪排列)。
查詢語法是使用標準的LINQ查詢運算符來表達查詢的一種簡化寫法,該語法能在密密麻麻的程式碼中增加開發者的可讀性和簡潔性。VS2008對查詢語法提供了完整的intellisense和編譯時檢查支援,同Lambda運算式中的例子,下面的查詢語法能完成相同的操作,並完成了按姓名降冪排列 (找出年齡為25歲的員工,按員工姓名降冪排列)。
LINQ的支援
在.net framework 3.5中,最大的重點就是LINQ,LINQ to SQL是.NET 3.5中內置的OR/M (物件關係映射),它允許你使用.NET 物件導向模式對關聯式資料庫進行物件方式的操作,如建立一個LINQ物件對象,然後你可以使用LINQ對資料庫進行新增/更改/刪除/查詢等功能。LINQ to SQL也完整支援交易處理(Transaction),View和預存程式(Stored Procedure)的處理,它還可提供了一個把業務邏輯和驗證規則結合進你的資料模型中,這種方式與原來的SQL的方式是截然不同的,所有的開發人員都要考慮是否採用這種方式來進行,由於LINQ我們將有專門的文章討論此LINQ的新觀念與優缺點,在此我們僅簡單定義即可。
如下可以輕易利用LINQ to SQL的Templates來自動產生一個LINQ的Class,並以VS2008的server explorer中拖曳所要的Table到dbml的designer上,這樣就完成了一個物件關係的映射dbml。
在頁面中的我們可以直接使用這個LINO的語法來查詢資料了。
在頁面中的我們可以直接使用這個LINO的語法來查詢資料了。
沒有留言:
張貼留言