FuncT,TResult泛型委托
生活随笔
收集整理的這篇文章主要介紹了
FuncT,TResult泛型委托
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
描述:
封裝一個(gè)具有一個(gè)參數(shù)并返回TResult參數(shù)指定的類(lèi)型值的方法.
語(yǔ)法:
public delegate TResult Func<T,TResult>(T arg);參數(shù)類(lèi)型:
T:此委托封裝的方法的參數(shù)類(lèi)型.
TResult:此委托封裝的方法的返回值類(lèi)型.
參數(shù):
arg:委托封裝的方法的參數(shù)
返回值:此委托封裝的方法的返回值
備注:
可以使用此委托構(gòu)造一個(gè)能以參數(shù)形式傳遞的方法,而不用顯式聲明自定義的委托.該方法必須與此委托的方法簽名想對(duì)應(yīng).
也就是說(shuō),封裝的方法必須具有一個(gè)通過(guò)值傳遞給它的參數(shù),并且具有返回值.
注意:
若要引用一個(gè)具有一個(gè)參數(shù)并返回void的方法,則需要使用泛型Action<T>委托.
上面接受的只是有一個(gè)參數(shù),并有返回值的情況,其實(shí)Func委托共有以下形式:
public delegate TResult Func<TResult>(); public delegate TResult Func<T,TResult>(T arg); public delegate TResult Func<T1,T2,TResult>(T1 arg1,T2 arg2); public delegate TResult Func<T1,T2,T3,TResult>(T1 arg1,T2 arg2,T3 arg3); public delegate TResult Func<T1,T2,T3,T4,TResult>(T1 arg1,T2 arg2,T3 arg3,T4 arg4);即:當(dāng)我們使用有一個(gè)、兩個(gè)、三個(gè)、四個(gè)參數(shù)并有一個(gè)返回值時(shí),可以不用自己定義委托,可以使用已定義好的委托。
例子:
protected void Page_Load(object sender, EventArgs e) {List<int> list = new List<int>();list.AddRange(new int[] { 7, 6, 10, 1, 2, 3, 4, 5, 8 });Func<int, bool> fi = new Func<int, bool>(MoreThan5);IEnumerator<int> ie =list.Where<int>(fi).GetEnumerator();//效果與list.Where<int>(fi).GetEnumerator()一致//IEnumerator<int> ie = list.Where<int>(x => x > 5).GetEnumerator();//效果與list.Where<int>(fi).GetEnumerator()一致//IEnumerator<int> ie = list.Where(delegate(int i){return i > 5;}).GetEnumerator();while(ie.MoveNext()){Response.Write(ie.Current.ToString()+"<br/>"); } }public static bool MoreThan5(int i) {return i > 5; }頁(yè)面輸出:
7
6
10
8
總結(jié)
以上是生活随笔為你收集整理的FuncT,TResult泛型委托的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 固废处理板块的龙头股 环保行业一定成之后
- 下一篇: IIS处理并发请求时出现的问题及解决