這篇文章不錯,《C#,語言的變遷》
http://www.cnblogs.com/anytao/archive/2009/05/08/must_net_29.html
其中的看點:
看點1:
========
以最簡單的交換資料為例,我們來瞭解泛型帶來的好處:
// Release : code01, 2009/05/07// Author : Anytao, http://www.anytao.compublic static void Swap(ref int x, ref int y){int temp = x;x = y;y = temp;}public static void Swap(ref string str1, ref string str2){string temp = str1;str1 = str2;str2 = temp;}
以上兩種演算法分別實現了對整型、字串型資料的交換,在泛型引入之前實現相同的交換演算法需要分別為所有的類型構建相似的處理邏輯,這顯然是一種代碼上的浪費,而泛型特性徹底解決了這一問題:
// Release : code02, 2009/05/07// Author : Anytao, http://www.anytao.compublic static void Swap<T>(ref T t1, ref T t2){T temp = t1;t1 = t2;t2 = temp;}
看點2:
=============
以對象初始化器為例,在2.0時初始化對象成員,我們以這種方式實現:
User user = new User();user.Name = "小王";user.Age = 28;
在3.0中,實現對象初始化有了更好的解決方案,由對象初始化器來完成:
User user = new User { Name = "小王", Age = 28 };
同樣的方式可以用來實現集合的初始化和隱式類型的初始化等。
接著,我們再來瞭解一下自動屬性帶來的文法魅力,在3.0之前進行屬性封裝的是一件麻煩的事情,例如:
// Release : code03, 2009/05/07// Author : Anytao, http://www.anytao.comclass User{private string name;public string Name{get { return name; }}private int age;public int Age{get { return age; }set { age = value; }}}
而自動屬性將這一切化簡為無形,文法簡單而功能依舊:
// Release : code04, 2009/05/07// Author : Anytao, http://www.anytao.compublic class User{public string Name { get; set; }public int Age { get; set; }}
這些所有的新特性最終都為了一個共同的目標而鋪墊,這就是C# 3.0中最重量級的新特性:LINQ。所以,本文也不能少了對LINQ的討論,在代碼層級實作類別似於SQL式的查詢文法,以型別安全的通用方式完成增、刪、改、查等資料操作的基本方式。只要資料來源基於IEnumerable<T>介面而實現,那麼不管是關係型資料、記憶體中集合還是XML都可以作為LINQ查詢對象進行資料處理,這為物件導向語言實現函數式的編程體驗創造了條件,一種全新的編程風格為編程體驗刮來一股旋風:
// Release : code05, 2009/05/07// Author : Anytao, http://www.anytao.compublic static void Main(){List<User> users = new List<User>{new User{Name = "小王", Age = 27},new User{Name = "小張", Age = 29},new User{Name = "小李", Age = 23}};IEnumerable<User> result = from user in userswhere user.Age < 30orderby user.Age descendingselect user;foreach (var user in result){//執行操作}}