FuncT,TResult泛型委托
生活随笔
收集整理的這篇文章主要介紹了
FuncT,TResult泛型委托
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
描述:
封裝一個具有一個參數(shù)并返回TResult參數(shù)指定的類型值的方法.
語法:
public delegate TResult Func<T,TResult>(T arg);參數(shù)類型:
T:此委托封裝的方法的參數(shù)類型.
TResult:此委托封裝的方法的返回值類型.
參數(shù):
arg:委托封裝的方法的參數(shù)
返回值:此委托封裝的方法的返回值
備注:
可以使用此委托構(gòu)造一個能以參數(shù)形式傳遞的方法,而不用顯式聲明自定義的委托.該方法必須與此委托的方法簽名想對應(yīng).
也就是說,封裝的方法必須具有一個通過值傳遞給它的參數(shù),并且具有返回值.
注意:
若要引用一個具有一個參數(shù)并返回void的方法,則需要使用泛型Action<T>委托.
上面接受的只是有一個參數(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)我們使用有一個、兩個、三個、四個參數(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; }頁面輸出:
7
6
10
8
總結(jié)
以上是生活随笔為你收集整理的FuncT,TResult泛型委托的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 固废处理板块的龙头股 环保行业一定成之后
- 下一篇: IIS处理并发请求时出现的问题及解决