c#中泛型委派的範例程式碼分享

來源:互聯網
上載者:User
本文主要介紹了c#中的泛型委派。具有很好的參考價值,下面跟著小編一起來看下吧

今天學習一下c#中的泛型委派。

1.一般的委託,delegate,可以又傳入參數(<=32),聲明的方法為 public delegate void SomethingDelegate(int a);

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace delegateSummary { public delegate void GetIntDelegate(int a); //聲明一個委託 public class getIntClass {  public static void SetDelegateString(int a,GetIntDelegate getIntDelegate) {//使用委託  getIntDelegate(a); } public void getInt1(int a) { //方法1  Console.WriteLine("getInt1方法調用,參數為:" + a); } public void getInt2(int a) { //方法2  Console.WriteLine("getInt2方法調用,參數為:" + a); } } class Program { static void Main(string[] args) {  getIntClass gc=new getIntClass();  getIntClass.SetDelegateString(5, gc.getInt1);  //方法1,2作為委託的參數  getIntClass.SetDelegateString(10, gc.getInt2);   Console.WriteLine("=====================");  GetIntDelegate getIntDelegate;  getIntDelegate = gc.getInt1;     //將方法1,2綁定到委託  getIntDelegate += gc.getInt2;  getIntClass.SetDelegateString(100, getIntDelegate);   Console.Read(); }  }}

輸出結果,注意兩種方式的不同,第一種將方法作為委託的參數,第二種是將方法綁定到委託。

2.泛型委派之Action,最多傳入16個參數,無傳回值。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace delegateSummary { class Program { static void Main(string[] args) {  TestAction<string>(getString, "WhiteTaken"); //傳入方法  TestAction<int>(getInt, 666);  TestAction<int, string>(getStringAndInt, 666, "WhiteTaken");  Console.Read();   } public static void TestAction<T>(Action<T> action,T p1) {        //Action傳入一個參數測試  action(p1); } public static void TestAction<T, P>(Action<T, P> action, T p1, P p2) { //Action傳入兩個參數測試  action(p1,p2); } public static void getString(string a) {    //實現int類型列印  Console.WriteLine("測試Action,傳入string,並且傳入的參數為:" +a); } public static void getInt(int a) {     //實現String類型列印  Console.WriteLine("測試Action,傳入int,並且傳入的參數為:" + a); } public static void getStringAndInt(int a, string name) {    //實現int+string類型列印  Console.WriteLine("測試Action,傳入兩參數,並且傳入的參數為:" + a+":"+name); } }}

測試結果:

3.泛型委派之Func,最多傳入16個參數,有傳回值。(寫法與Action類似,只是多了傳回值)

4.泛型委派之predicate(不是很常用),傳回值為bool,用在Array和list中搜尋元素。(沒有用到過,等用到了再更新)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.