C#3 幾乎所有的新特性都是爲LINQ服務的,但他們單獨使用也非常有用,接下來我們來簡單看看C#3 的幾個新特性吧。
一、自動實現的屬性-----編寫由字段直接支持的簡單屬性,不再顯得臃腫不堪。
之前寫屬性時是大至是這樣:
private string name; public string Name { get { return name; } set { name = value; } }
有了自動屬性後是這樣子的:
public string Name { get; set; }
在C#3中還是可以使用之前字段和屬性的寫法,主要是因爲有些字段的值在要在get,set中進行控制,但大多數屬性還是沒有控制的,所以用自動屬性更方便。
二、隱式類型的局部變量-----根據初始值推斷變量的類型,從而簡化局部變量的聲明。
1、寫法
如果要使用隱式類型,唯一要做的就是將普通局部變量聲明中的類型名稱替換爲var
var args = Environment.GetCommandLineArgs();
三、對象和集合初始化程序-----用一個表達就能輕鬆的創建和初始化對象。
現在有一個對象
public class Person { public int Age { get; set; } public string Name { get; set; } public Person() { } public Person(string name) { } }
在C#3之前可以採用如下兩種方式初始化:
//方法一:直接使用無參構造函數,然後設置這兩個屬性 Person person = new Person(); person.Age = 10; person.Name = "andy"; //方法二:使用有參的構造函數 Person person2 = new Person("andy"); person2.Age = 20;
C#3之後又多瞭如下三種方式:
//方法一 Person person1 = new Person() { Age = 1, Name = "andy" }; //方法二 Person person2 = new Person { Age = 2, Name = "andy" }; //方法三 Person person3 = new Person("andy") { Age = 3 };
四、隱式類型的數組-----根據內容推斷數組的類型,從而簡化數組的創建表達式。
有這樣一個方法:
public string getPerson(string[] nameArry) { return nameArry[0]; }
C#3之前的寫法:
getPerson(new string[] {"andy","tom"});
C#3又多了一種寫法:
getPerson(new[] { "andy", "tom" });
五、匿名類型-----允許你創建新的“臨時”類型來包含簡單的屬性。
匿名類型服務一個更高的目標----linq
var tom = new { age = 10, name = "andy" };