FuncT,TResult泛型委托
生活随笔
收集整理的這篇文章主要介紹了
FuncT,TResult泛型委托
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述:
封裝一個具有一個參數并返回TResult參數指定的類型值的方法.
語法:
public delegate TResult Func<T,TResult>(T arg);參數類型:
T:此委托封裝的方法的參數類型.
TResult:此委托封裝的方法的返回值類型.
參數:
arg:委托封裝的方法的參數
返回值:此委托封裝的方法的返回值
備注:
可以使用此委托構造一個能以參數形式傳遞的方法,而不用顯式聲明自定義的委托.該方法必須與此委托的方法簽名想對應.
也就是說,封裝的方法必須具有一個通過值傳遞給它的參數,并且具有返回值.
注意:
若要引用一個具有一個參數并返回void的方法,則需要使用泛型Action<T>委托.
上面接受的只是有一個參數,并有返回值的情況,其實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);即:當我們使用有一個、兩個、三個、四個參數并有一個返回值時,可以不用自己定義委托,可以使用已定義好的委托。
例子:
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
總結
以上是生活随笔為你收集整理的FuncT,TResult泛型委托的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 固废处理板块的龙头股 环保行业一定成之后
- 下一篇: 台积电开启史上最大规模招聘计划 预计今年