亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中常見的系統內置委托用法詳解

2020-01-24 02:26:43
字體:
來源:轉載
供稿:網友

一般來說,C#在公共語言運行時(CLR)環境中系統為我們內置了一些常用的委托,包括Action類的委托、Func類的委托、Predicate<T>委托、Comparison<T>委托等等。以上這些委托的命名空間都是System,所屬程序集都是 mscorlib.dll,今天本文就來講一講這些委托的使用方法。

就像我們自己已定義好的一樣,要實現某些功能,我們可以直接利用系統內置委托,實例化它們,而不必顯式定義一個新委托并將命名方法分配給該委托。如:

public static void Test(){  Console.WriteLine("Just For Test");}static void Main(string[] args){  Action a = new Action(Test); //直接實例化一個Action委托,不用自己再定義新委托  a();}

只要了解了該系統內置委托是干什么的,傳什么參數,返回什么值,大家就可以仿上述例子自行調用,不再贅述。下面是我對這四類委托的總結,并附有結合匿名方法與Lambda表達式的范例,兩種方法實現的結果一樣,大家可舉一反三,靈活運用。

一、Action類的委托

1.Action委托 封裝一個方法,該方法不具有參數并且不返回值

2.Action<T>委托 封裝一個方法,該方法只有一個參數并且不返回值

3.Action<T1,T2>委托 封裝一個方法,該方法具有兩個參數并且不返回值

…… ……

17.Action<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>委托 封裝一個方法,該方法具有16個參數并且不返回值

下面以Action<T>委托為例,示范如何使用Action類的委托,該類委托僅僅是參數個數上有區別而已。

static void Main(string[] args){  #region Action<T>委托示例  //需求:打印出整型集合list的元素  List<int> list = new List<int>() { 1, 2, 3, 4, 5 };  //將匿名方法分配給 Action<T> 委托實例  Action<int> concat1 = delegate(int i) { Console.WriteLine(i); };  list.ForEach(concat1);  //將 lambda 表達式分配給 Action<T> 委托實例  Action<int> concat2 = (i => Console.WriteLine(i));  list.ForEach(concat2);  Console.ReadKey();  #endregion }

總結:

Action類的委托最少可以傳入0個參數,最多可以傳入16個參數,參數類型皆為逆變,并且不返回值。

二、Func類的委托

1.Func(TResult)委托封裝封裝一個不具有參數但卻返回 TResult 參數指定的類型值的方法

2.Func(T,TResult)委托 封裝一個具有一個參數并返回 TResult 參數指定的類型值的方法

3.Func(T1,T2,TResult)委托 封裝一個具有兩個參數并返回 TResult 參數指定的類型值的方法

…… ……

17.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,TResult>委托 封裝一個方法,該方法具有16個參數,并返回TResult參數所指定的類型的值

下面以Func<T,TResult>委托為例,示范如何使用Func類的委托,該類委托僅僅是參數個數上有區別而已。

static void Main(string[] args){  #region Func<T,TResult>委托示例  //需求:查找整型集合list中大于3的所有元素組成的新集合,并打印出集合元素  List<int> list = new List<int>() { 1, 2, 3, 4, 5 };  //將匿名方法分配給 Func<T,TResult> 委托實例  Func<int, bool> concat1 = delegate(int i) { return i > 3; };  var newlist1 = list.Where(concat1).ToList();  //將 Lambda 表達式分配給 Func<T,TResult> 委托實例  Func<int, bool> concat2 = i => i > 3;  var newlist2 = list.Where(concat2).ToList();  newlist1.ForEach(i => Console.WriteLine(i.ToString()));  newlist2.ForEach(i => Console.WriteLine(i.ToString()));  Console.ReadKey();  #endregion}

總結:

Func類的委托最少可以傳入輸入泛型參數(in,逆變) 1個,最多可以傳入輸入泛型參數(in,逆變) 16個,傳入的輸出泛型參數(out,協變)有且只有一個,這個類型是此委托封裝的方法的返回值類型。

三、Predicate<T>委托

表示定義一組條件并確定指定對象是否符合這些條件的方法

下面給出Predicate<T>委托的范例:

static void Main(string[] args){  #region Predicate<T>委托示例  //需求:查找整型集合list中大于3的所有元素組成的新集合,并打印出集合元素  List<int> list = new List<int>() { 1, 2, 3, 4, 5 };  //將匿名方法分配給 Predicate<T> 委托實例  Predicate<int> concat1 = delegate(int i) { return i > 3; };  var newlist1 = list.FindAll(concat1);  //將 lambda 表達式分配給 Predicate<T> 委托實例  Predicate<int> concat2 = (c => c > 3);  var newlist2 = list.FindAll(concat2);  newlist1.ForEach(i => Console.WriteLine(i));  newlist2.ForEach(i => Console.WriteLine(i));       Console.ReadKey();  #endregion}

總結:

Predicate<T>委托封裝一個方法,該方法傳入一個類型參數,這個參數是指要比較的對象的類型,此類型參數是逆變,同時接收一個參數(該參數就是要按照由此委托表示的方法中定義的條件進行比較的對象,參數的類型就是傳入的類型參數的類型),該方法始終返回bool類型的值。如果該對象符合由此委托表示的方法中定義的條件,則為 true;否則為 false。

四、Comparison<T>委托

表示比較同一類型的兩個對象的方法

下面給出Comparison<T>委托的范例:

static void Main(string[] args){  #region Comparison<T>委托示例  //需求:將整型集合list中的所有元素倒序排列打印出來  List<int> list = new List<int>() { 1, 2, 3, 4, 5 };  //將匿名方法分配給 Comparison<T> 委托實例  Comparison<int> concat1 = delegate(int i, int j) { return j - i; };  //將 lambda 表達式分配給 Comparison<T> 委托實例  Comparison<int> concat2 = (i, j) => j - i;  list.Sort(concat1);  list.ForEach(c => Console.WriteLine(c.ToString()));  list.Sort(concat2);  list.ForEach(c => Console.WriteLine(c.ToString()));       Console.ReadKey();  #endregion}

 總結:

Comparison<T>委托封裝一個方法,該方法傳入一個類型參數,這個參數是指要比較的對象的類型,此類型參數是逆變,同時接收兩個同類型的參數(這兩個參數就是要比較的兩個對象,參數的類型就是傳入的類型參數的類型),始終返回int類型的值,即一個有符號整數,指示 x 與 y 的相對值,如下表所示。

含義
小于0 x 小于y 
0 x 等于y 
大于0 x 大于y 
希望本文所述對大家的C#程序設計有所幫助。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品九九久久久久久久| 色综合久综合久久综合久鬼88| 国产极品jizzhd欧美| 欧美性视频网站| 欧美激情视频网| 亚洲片在线观看| 日韩中文字幕免费视频| 久久久日本电影| 久久久爽爽爽美女图片| 亚洲第一在线视频| 日本精品视频在线播放| 高清欧美性猛交xxxx黑人猛交| 国产精品欧美在线| 国产精品大片wwwwww| 国产精品精品久久久久久| 欧美在线不卡区| 久久青草福利网站| 日韩理论片久久| 久久精品国产免费观看| 亚洲精品久久久久中文字幕二区| 中文字幕精品一区久久久久| 日韩欧美大尺度| 色吧影院999| 精品久久久久久国产91| 久久国产精品影视| 亚洲**2019国产| 欧美裸体xxxx| 欧美激情一区二区三区在线视频观看| 国产精品黄页免费高清在线观看| 欧美亚洲另类激情另类| 国产精品aaaa| 国产精品视频免费在线观看| 久久久国产影院| 久久久久久国产三级电影| 亚洲一区二区三区成人在线视频精品| 成人激情视频在线| 欧美性生活大片免费观看网址| 在线观看国产精品淫| 亚洲人成电影网站色…| 最近中文字幕2019免费| 日韩有码在线播放| 国产精品视频26uuu| 97视频免费在线观看| 日韩精品亚洲元码| 欧美俄罗斯性视频| 亚洲xxx自由成熟| 久久精品视频在线观看| 国产69精品99久久久久久宅男| 欧美大肥婆大肥bbbbb| 国产精品久久久久91| 亚洲精品国产成人| 国产va免费精品高清在线| 两个人的视频www国产精品| 亚洲美女av电影| yellow中文字幕久久| 国产成人精品久久二区二区| 亚洲成人久久电影| 亚洲国产欧美一区二区三区同亚洲| 亚洲天堂av网| 动漫精品一区二区| 欧美日韩xxx| 精品中文字幕久久久久久| 亚洲免费av片| 国产一区香蕉久久| 国产91精品在线播放| 成人激情视频小说免费下载| 国产乱人伦真实精品视频| 国产在线一区二区三区| 久久久久久18| 奇米4444一区二区三区| 91美女片黄在线观| 日韩中文在线中文网在线观看| 91av成人在线| 欧美日韩美女视频| 久久久精品一区二区三区| 久久国内精品一国内精品| 2021久久精品国产99国产精品| 日韩免费黄色av| 久久精视频免费在线久久完整在线看| 亚洲裸体xxxx| 欧美激情视频给我| 欧美精品中文字幕一区| 亚洲淫片在线视频| 中文在线资源观看视频网站免费不卡| 国产精品丝袜视频| 精品一区二区三区三区| 国a精品视频大全| 91久久夜色精品国产网站| 国内精品美女av在线播放| 国产精品日韩在线播放| 日韩在线资源网| 日本高清视频一区| 色综合久久天天综线观看| 超碰97人人做人人爱少妇| 久久99热精品| 最近2019中文免费高清视频观看www99| 久久99热精品这里久久精品| 国产精品一区二区女厕厕| 92裸体在线视频网站| 亚洲成人av在线播放| 青草青草久热精品视频在线网站| 亚洲激情视频网| 国产欧亚日韩视频| 色婷婷综合久久久久中文字幕1| 国产日韩在线免费| 亚洲美女性生活视频| 都市激情亚洲色图| 国产小视频国产精品| 成人黄色免费网站在线观看| 欧美天堂在线观看| 欧美成人四级hd版| 国产欧美一区二区三区四区| 国产欧洲精品视频| 91免费看片网站| 亚洲综合大片69999| 亚洲人成在线电影| 久久黄色av网站| 欧美性猛交xxx| 亚洲天堂一区二区三区| 久久视频免费观看| 清纯唯美亚洲激情| 亚洲18私人小影院| 夜夜嗨av色综合久久久综合网| 国产精品久久国产精品99gif| 欧美三级免费观看| 国产精品美女免费看| 久久激情视频免费观看| 日韩在线不卡视频| 久久久久久免费精品| 欧美重口另类videos人妖| 91av视频在线播放| 久久久成人精品视频| 亚洲最大激情中文字幕| 中文字幕综合一区| 久久久精品一区二区三区| 91视频国产精品| 久久久久国产精品www| 日韩欧美一区二区三区| 国产亚洲欧洲在线| 国产一区二区三区中文| 性色av一区二区三区在线观看| 国产精品一香蕉国产线看观看| 欧美中文字幕视频在线观看| 亚洲黄色免费三级| 国产精品www| 国产高清在线不卡| 国产日韩综合一区二区性色av| 清纯唯美亚洲激情| 欧美极品美女电影一区| 中文字幕精品av| 欧美日韩国产限制| 成人国产亚洲精品a区天堂华泰| 中国日韩欧美久久久久久久久| 国模精品视频一区二区三区| 国产免费亚洲高清| 亚洲色图50p| 亚洲一区二区三区777| 欧美激情精品久久久久久大尺度| 日本午夜在线亚洲.国产| 欧美激情videos| 中文字幕亚洲综合久久| 欧美成aaa人片免费看| 国产精品成人免费视频| 日韩成人免费视频|