標籤:
在學習ASP.NET MVC之前,有必要先瞭解一下C#3.0所帶來的新的文法特性,這一點尤為重要,因為在MVC項目中我們利用C#3.0的新特性將會大大的提高我們的開發效率,同時,在MVC項目中你將到處可以看到C#3.0新特性的身影。
C#3.0新特性
- 自動屬性
- 隱式類型 var
- 對象初始化器與集合初始化器
- 匿名類
- 擴充方法
- Lambda運算式
自動屬性
這個概念很簡單,其簡化了我們在.NET的時候手寫一堆私人成員+屬性的編程方式,我們只需要使用如下方式聲明一個屬性,編譯器會自動產生所需的成員變數。
基本用法:
public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public Address Address { get; set; } }
在C#3.0之前,我們是這樣來實現屬性的:
private int id; public int Id { get { return id; } set { id = value; } }
隱式推斷類型
這個名稱可能對你很陌生,但是var這個關鍵字應該都用過,在C#中使用var聲明一個對象時,編譯器會自動根據其指派陳述式推斷這個局部變數的類型。賦值以後,這個變數的類型也就確定而不可以再變更。另外var關鍵字也用於匿名類的聲明。
應用場合:var主要用途是表示一個LINQ查詢的結果。這個結果可能是ObjectQuery<>或IQueryable<>類型的對象,也可能是一個簡單的實體類型的對象。這時使用var聲明這個對象可以節省很多代碼書寫上的時間。
var customer = new Customer();
對象初始化器
在.NET2.0中構造一個對象的方法一是提供一個重載的建構函式,二是用預設的建構函式產生一個對象,然後對其屬性進行賦值。在.NET3.5/C#3.0中我們有一種更好的方式來進行對象的初始化。那就是使用對象初始化器。這個特性也是匿名類的一個基礎,所以放在匿名類之前介紹。
基本用法:
User user = new User { Id = 1, Name = "Zouqj", Age = 26 };
匿名類
有了前文初始化器的介紹,匿名類就很簡單了。我們可以使用new { object initializer }或new[]{ object, …}來初始化一個匿名類或不確定類型的數組。匿名類的對象需要使用var關鍵字聲明。範例程式碼:
var p = new { Id = 1, Name = " Zouqj ", Age = 26 };
應用場合:
當直接使用select new { object initializer }這樣的文法就是將一個LINQ查詢的結果返回到一個匿名類中。
Lambda運算式
Lambda運算式的本質就是匿名函數,Lambda運算式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。
delegate int AddDel(int a,int b); //定義一個委託 #region lambda AddDel fun = delegate(int a, int b) { return a + b; }; //匿名函數 //Console.WriteLine(fun(1, 3)); //lambda 參數類型可以進行隱式推斷,可以省略類型 lambda本質就是匿名函數 AddDel funLambda = ( a, b) => a + b; List<string> strs = new List<string>() { "1","2","3" }; var temp = strs.FindAll(s => int.Parse(s) > 1); foreach (var item in temp) { Console.WriteLine(item); } //Console.WriteLine(funLambda(1,3)); #endregion
ASP.NET MVC—1、前期知識儲備(C#3.0新特性)