C#3.0與LINQ新特性簡介

發表于:2008-05-07來源:作者:點擊數: 標簽:LINQ特性簡介
簡介 本文主要是關注于LINQ——我認為是VS2008(.NET3.5)中最令人興奮的特性。LINQ使查詢成為了.NET中頭等的編程概念,被查詢的數據可以是XML(LINQ to XML)、Databases(LINQ to SQL 、LINQ to Dataset、LINQ to Entities)和對象(LINQ to Objects)。LIN
簡介

  本文主要是關注于LINQ——我認為是VS2008(.NET3.5)中最令人興奮的特性。LINQ使查詢成為了.NET中頭等的編程概念,被查詢的數據可以是XML(LINQ to XML)、Databases(LINQ to SQL、LINQ to Dataset、LINQ to Entities)和對象(LINQ to Objects)。LINQ也是可擴展的,允許你建立自定義的LINQ數據提供者(比如:LINQ to Amazon、LINQ to NHibernate、LINQ to LDAP)。

  在這里我會討論C#3.0中的一些新的語言特性和改進,正是它們使得LINQ變得如此強大,讓你可以寫出這樣的代碼:
var result = from c in Customers where c.City == Boston" orderby c.LastName descending select new { c.FirstName, c.LastName, c.Address };
  記住,如果你想要使用LINQ,你需要安裝Visual Studio 2008(.NET3.5)。
 
  新的語言特性

  I/ 自動屬性
public class Point { private int _x, _y; public int X { get { return _x; } set { _x = value; } } public int Y { get { return _y; } set { _y = value; } } }
  上面的代碼簡單的定義了一個擁有兩個屬性的類?,F在,使用VS2008中的C#編譯器,我們就可以用自動屬性寫的更簡單,它能自動的生成帶有get/set操作的私有域。
public class Point { public int X { get; set; } public int Y { get; set; } }
  上面的代碼可讀性更好并且簡潔。
  (這個特性和LINQ還沒有關系)

  II/ 局部變量類型

  使用這個特性,聲明一個局部變量,它的具體類型是通過初始化表達式來推斷。這點是通過var關鍵詞完成的(這個使用腳本語言的人應該很熟悉,但它們實際上是有很大區別的)。我們可以寫出如下的代碼:
var num = 50; var str = "simple string"; var obj = new myType(); var numbers = new int[] {1,2,3}; var dic = new Dictionary<int,myType>();
  編譯器會生成IL中間代碼,就如同我們編譯了下面的代碼:
int num = 50; string str = "simple string"; myType obj = new myType(); int[] numbers = new int[] {1,2,3}; Dictionary<int,myType> dic = new Dictionary<int,myType>();
  注意,這里并不存在無類型的變量,也沒有推遲類型的綁定。編譯器是從右邊的賦值語句來自動推斷和聲明變量的類型的,var關鍵詞是一個強類型的變量引用。
  III/ 對象初始化和集合初始化

  我們繼續使用上面的Point類。假設我們想要這個類的一個實例,我們會建立對象并設置它的屬性,代碼會是這樣子的:
Point p = new Point(); p.X = 0; p.Y = 0;

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97