日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#委托Action、ActionT、FuncT、PredicateT

發布時間:2024/9/20 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#委托Action、ActionT、FuncT、PredicateT 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CLR環境中給我們內置了幾個常用委托Action、 Action<T>、Func<T>、Predicate<T>,一般我們要用到委托的時候,盡量不要自己再定義一 個委托了,就用系統內置的這幾個已經能夠滿足大部分的需求,且讓代碼符合規范。

一、Action

Action封裝的方法沒有參數也沒有返回值,聲明原型為:

1 public delegate void Action();

用法如下:

1 public void Alert() 2 { 3 Console.WriteLine("這是一個警告"); 4 } 5 6 Action t = new Action(Alert); // 實例化一個Action委托 7 t();

如果委托的方法里的語句比較簡短,也可以用Lambd表達式直接把方法定義在委托中,如下:

1 Action t = () => { Console.WriteLine("這是一個警告"); }; 2 t();

二、Action<T>

Action<T>是Action的泛型實現,也是沒有返回值,但可以傳入最多16個參數,兩個參數的聲明原型為:

1 public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);

用法如下:

1 private void ShowResult(int a, int b) 2 { 3 Console.WriteLine(a + b); 4 } 5 6 Action<int, int> t = new Action<int, int>(ShowResult);//兩個參數但沒返回值的委托 7 t(2, 3);

同樣也可以直接用Lambd表達式直接把方法定義在委托中,代碼如下:?

1 Action<int, int> t = (a,b) => { Console.WriteLine(a + b); }; 2 t(2, 3);

三、Func<T>

Func<T>委托始終都會有返回值,返回值的類型是參數中最后一個,可以傳入一個參數,也可以最多傳入16個參數,但可以傳入最多16個參數,兩個參數一個返回值的聲明原型為:

1 public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);

用法如下:

1 public bool Compare(int a, int b) 2 { 3 return a > b; 4 } 5 6 Func<int, int, bool> t = new Func<int, int, bool>(Compare);//傳入兩個int參數,返回bool值 7 bool result = t(2, 3);

同樣也可以直接用Lambd表達式直接把方法定義在委托中,代碼如下:

1 Func<int, int, bool> t = (a, b) => { return a > b; }; 2 bool result = t(2, 3);

四 、Predicate<T>

Predicate<T>委托表示定義一組條件并確定指定對象是否符合這些條件的方法,返回值始終為bool類型,聲明原型為:

1 public delegate bool Predicate<in T>(T obj);

?用法如下:

1 public bool Match(int val) 2 { 3 return val > 60; 4 } 5 6 Predicate<int> t = new Predicate<int>(Match); //定義一個比較委托 7 int[] arr = { 13, 45, 26, 98, 3, 56, 72, 24 }; 8 int first = Array.Find(arr, t); //找到數組中大于60的第一個元素

同樣也可以直接用Lambd表達式直接把方法定義在委托中,代碼如下:

1 Predicate<int> t = val => { return val > 60;}; //定義一個比較委托 2 int[] arr = { 13, 45, 26, 98, 3, 56, 72, 24 }; 3 int first = Array.Find(arr, t); //找到數組中大于60的第一個元素

總結:

  • 如果要委托的方法沒有參數也沒有返回值就想到Action
  • 有參數但沒有返回值就想到Action<T>
  • 無參數有返回值、有參數且有返回值就想到Func<T>
  • 有bool類型的返回值,多用在比較器的方法,要委托這個方法就想到用Predicate<T>

總結

以上是生活随笔為你收集整理的C#委托Action、ActionT、FuncT、PredicateT的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区不卡 | 成人在线视频免费 | 国产一区二区三区四区视频 | 免费av网址在线观看 | 日本一区二区三区久久 | 男男h黄动漫啪啪无遮挡软件 | 中文字幕在线日韩 | 亚洲成人乱码 | 日日爽天天 | 无码粉嫩虎白一线天在线观看 | 亚洲精品高清无码视频 | 亚洲综合色av | 天天躁日日躁狠狠很躁 | www狠狠爱 | 69久久久久久 | a天堂中文网 | 在线观看视频www | 日韩激情视频在线观看 | 国产精品区在线 | 日韩成人免费观看 | 欧美xxxx69| 少妇人妻偷人精品无码视频新浪 | 欧美视频免费看 | 十八禁视频网站在线观看 | 精品久久免费观看 | 国产精品亚洲成在人线 | 91精品国产高清一区二区三蜜臀 | 国产精品高潮呻吟视频 | 自拍偷拍激情视频 | 婷婷视频一区二区三区 | 探花国产在线 | 国产男同gay网站 | 国产精品日韩av | 成人中文字幕+乱码+中文字幕 | 自拍偷拍另类 | 中文av一区二区三区 | 欧美国产中文 | 绿帽视频 | 中文字幕在线视频日韩 | 美女大黄网站 | 午夜影院免费看 | 国产乱国产乱老熟300部视频 | 国产资源第一页 | 欧美午夜久久 | 欧美三级小视频 | 成人福利在线视频 | 精品视频一区二区三区四区 | 国产麻豆精品视频 | 国产亚洲精 | 99久久久国产精品无码性 | 操你啦免费视频 | 日韩一二三级 | 成人免费毛片糖心 | 色偷偷一区二区三区 | 色a视频| 久久久国产精品x99av | 另类捆绑调教少妇 | 在线看你懂得 | 欧美aⅴ视频 | 欧美精品一二三四区 | 中文字幕日韩精品在线 | 天天综合网国产 | 亚洲成人av免费在线观看 | 99视频免费观看 | 成人精品视频一区二区三区尤物 | 青青草成人免费在线视频 | 黄色不卡av | 1000亚洲裸体人体 | 一区二区乱子伦在线播放 | 欧美美女一区二区三区 | 91老师国产黑色丝袜在线 | 欧美日韩在线一区 | 欧美一级二级在线观看 | 国产一区二区啪啪啪 | 少妇性l交大片免潘金莲 | 国产中文字幕网 | 国产又色又爽 | av色在线观看 | 天天色成人| 韩国三级视频在线 | 成人精品综合 | 久久精品一区二区国产 | 精品在线99| 国产精品入口日韩视频大尺度 | 国产激情无码一区二区 | 亚洲黄色免费视频 | 狠狠躁狠狠躁视频专区 | 蜜桃av噜噜一区二区三区小说 | 91漂亮少妇露脸在线播放 | 污污内射久久一区二区欧美日韩 | 黄色片在线免费看 | 午夜淫片| 亚洲最新av网址 | 女人扒开双腿让男人捅 | 一区二区三区在线视频播放 | 久久久久久久久久久久97 | 日本人妻换人妻毛片 | 国产亚洲成av人在线观看导航 | 精品国产成人 |