麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#中Action和Func的使用

2019-11-17 02:28:30
字體:
來源:轉載
供稿:網友

C#中Action和Func的使用

在日常使用delegate時,我們通常需要顯示聲明一個名為XXX的委托,而在使用Action委托時,不必顯示定義一個封裝無參數過程的委托。

比如正常使用delegate:

 1 using System; 2  3 namespace MT 4 { 5     public delegate void ShowValue();//在這里顯示聲明一個委托 6  7     public class Test 8     { 9         //在這里有一個Test類,類中有一個void的方法,作用是輸出一個字符串10         PRivate string instanceName;11         public Test(string name)12         {13             this.instanceName = name;14         }15         public void DisplayToConsole()16         {17             Console.WriteLine(this.instanceName);18         }19     }20 21     public class Program22     {23         //在Main函數里使用委托去調用這個方法24         static void Main(string[] args)25         {26             Test name = new Test("Sirius");27             ShowValue method = name.DisplayToConsole;28             method();29             Console.ReadKey();30         }31     }32 }

Action就是這么個姿勢:

1 static void Main(string[] args)2 {3     Test name = new Test("Sirius");4     Action method = name.DisplayToConsole;5     method();6     Console.ReadKey();7 }

當然,Action也可以有簽名模板,Action<T>。

public void DisplayToConsole(string name){      Console.WriteLine(name);}
Action<string> method2 = name.DisplayToConsole;method2("123");Console.ReadKey();

說到Func,其實跟Action的區別就是,Func代理的方法必須有返回值,因為Func的重載模式是Func<T1,T2....TResult>,T幾代表代理的方法的模板,也就是可以傳入的參數,TResult就是代理方法的返回值。

比如,我們把上面的DisplayToConsole方法稍作修改,改為DisplayForFunc:

1         public void DisplayForFunc(string name)2         {3             Console.WriteLine(name);4         }

這個時候使用Func委托時不行的

Func<string, object> f = t.DisplayForFunc;

會被告知返回類型錯誤,Func所適應的代理則應該是具有返回值類型的,我們再修改一下方法,讓它返回一個無意義的bool值:

1         public bool DisplayForFunc(string name)2         {3             Console.WriteLine(name);4             return true;5         }
1         static void Main(string[] args)2         {3             Test t = new Test("Sirius");4             Func<string, bool> f = t.DisplayForFunc;5             f("123");6             Console.ReadKey();            7         }

這樣就是可以的啦!

順便貼一張MSDN的牛逼圖,這是我第一次看MSDN看到想笑&hellip;…

代碼參考:https://msdn.microsoft.com/zh-cn/library/system.action(v=vs.110).aspx


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲国产精品一区二区久久 | 欧美无极品| 91在线视频观看 | 久久久久久久久浪潮精品 | 黄片毛片一级 | 欧美 日韩 中文 | 欧美黄在线 | 中文字幕欧美专区 | 中文亚洲视频 | 欧美性猛交一区二区三区精品 | 国产资源在线观看视频 | 精品国产一区二区三区成人影院 | 午夜精品福利视频 | 黄网站色成年大片免费高 | 久草在线网址 | 成人免费福利视频 | 久久亚洲精品久久国产一区二区 | 九九热在线视频观看 | 久草视频福利在线观看 | 91成人在线网站 | 日本人乱人乱亲乱色视频观看 | 亚洲网站免费看 | 久久久一区二区精品 | 日韩黄色影视 | 亚洲视频网 | 久久老司机精品视频 | 黄色美女免费 | 久久久久久久久久久国产精品 | 最新一级毛片 | 久久国产精品电影 | 日韩av片在线播放 | 叉逼视频| 欧美视频在线一区二区三区 | 午夜视频久久久 | 国产a级片电影 | 色妞视频男女视频 | 久久久日韩精品一区二区三区 | 高清国产午夜精品久久久久久 | 免费黄色短视频网站 | 污视频在线免费播放 | 国产免费久久久 |