c#匿名類與匿名函式、lambda表示式
阿新 • • 發佈:2019-01-08
- 匿名類(隱式型別)
關鍵字:var
在linq查詢獲取結果時經常會用到,例如:
var result = from a in b
where b.id = 1
select new { a.name , a.age };
也可自定義
var v = new { name = "david" , age = 27 };
var v_words = { "audi" , "benz" , "bmw" };
從 Visual C# 3.0 開始,在方法範圍內宣告的變數可以具有隱式“型別”var。隱式型別本地變數為強型別,就像使用者已經自行宣告該型別,但編譯器決定型別一樣。
var 關鍵字指示編譯器通過初始化語句右側的表示式推斷變數的型別。 推斷型別可以是內建型別、匿名型別、使用者定義型別或 .NET Framework 類庫中定義的型別。
匿名方法(Anonymous methods) 提供了一種傳遞程式碼塊作為委託引數的技術。匿名方法是沒有名稱只有主體的方法
匿名函式是通過使用 delegate 關鍵字建立委託例項來宣告的。例如:
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
Console.WriteLine("Anonymous Method: {0}", x);
};
程式碼塊 Console.WriteLine(“Anonymous Method: {0}”, x); 是匿名方法的主體。
委託可以通過匿名方法呼叫,也可以通過命名方法呼叫,即,通過向委託物件傳遞方法引數。
來源:C# 匿名方法
參考:C#程式設計指南-匿名函式
3. lambda表示式
lambda表示式是一個匿名函式,是一種高效的類似於函數語言程式設計的表示式,Lambda簡化了開發中需要編寫的程式碼量,是LINQ的基礎。
lambda表示式格式:(引數列表)=>表示式或語句塊 ,舉例如下:
//無參
() => DoSomeThing() ;
//單引數
p => p.id > 0 ; //返回Bool
//多引數
( x , y ) => x * y ;
//帶型別輸入引數
( int x , int y ) => x * y;