一、匿名型別
可通過使用 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語句推斷出來的。編寫匿名方法 匿名方法是通過建立...