C 中的匿名

2021-08-20 13:46:35 字數 1869 閱讀 6499

一、匿名型別

可通過使用 new 運算子和物件初始值建立匿名型別。

示例:var v = new ;

var v = new , 

new

};匿名型別通常用在查詢表示式的 select 子句中,以便返回源序列中每個物件的屬性子集。

var query = from p in v select new ;

foreach (var o in query)

可以查詢物件

ienumerableresults = people.where(delegate(v p) ); 

二、匿名方法(不同寫法)

button1.click += delegate(system.object o, system.eventargs e)

;this.loaded += delegate

;載入事件

this.loaded += (sl, el) =>

}匿名方法與執行緒

system.threading.thread thread = new system.threading.thread(delegate(j)

);thread.start();

system.threading.threadpool.queueuserworkitem((s) =>;}

三、使委託與匿名方法關聯

delegate void del(string s);

private void window_loaded(object sender, routedeventargs e)

;p("hello");

}四、func,func是有返回值的泛型委託

func表示無參,返回值為int的委託

func表示傳入引數為object, string 返回值為int的委託

func表示傳入引數為object, string 返回值為int的委託

func表示傳入引數為t1,t2,,t3(泛型)返回值為int的委託

func至少0個引數,至多16個引數,根據返回值泛型返回。必須有返回值,不可void

匿名方法只能在使用委託的時候建立,事實上,它們通過delegate關鍵字建立。

使用示例:

var func = new func(delegate(bool x) );

int ret = func(true);

五、lambda 表示式,func委託

msdn中寫道:「lambda 表示式」是乙個匿名函式,它可以包含表示式和語句,並且可用於建立委託或表示式樹型別。

所有lambda表示式都使用lambda運算子=>

左邊是輸入引數列表

1.乙個引數:param=>expr

2.多個引數:(param-list)=>expr

右邊是表示式或語句塊

(引數列表)=>表示式或語句塊 

1、(x, y) => x * y                    //多引數,隱式型別=> 表示式  

2、x => x * 5                        //單引數, 隱式型別=>表示式  

3、x =>             //單引數,隱式型別=>語句塊  

4、(int x) => x * 5                    //單引數,顯式型別=>表示式  

5、(int x) =>      //單引數,顯式型別=>語句塊  

6、() => console.writeline()        //無引數 

在編寫lambda表示式時,可以忽略引數的型別,因為編譯器能夠根據上下文直接推斷引數的型別,示例**如下。

(x, y) => x + y                        //多引數,隱式型別=> 表示式 

C 中的匿名函式

c 中有個叫做 泛型 的東西,就是說只是個殼,到底是int,string,bool還是什麼型別,不知道,所以我們用個 t 表示。請看下面 declare the generic class public class genericlist class testgenericlist static v...

C 中的匿名函式

c 中有個叫做 泛型 的東西,就是說只是個殼,到底是int,string,bool還是什麼型別,不知道,所以我們用個 t 表示。請看下面 declare the generic class public class genericlist class testgenericlist static v...

c 匿名方法用途 C 匿名方法

我們討論了使用委託來引用具有與委託相同簽名的任何方法。換句話說,您可以使用該委託物件呼叫可由委託引用的方法。匿名方法提供了一種將 塊作為委託引數傳遞的技術。匿名方法是沒有名稱的方法,只是主體。您無需在匿名方法中指定返回型別 它是從方法體內的return語句推斷出來的。編寫匿名方法 匿名方法是通過建立...