精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

關于C#委托你不可不知的幾件事

開發 后端
我們今天要給大家講講C#委托,雖然這屬于基礎知識,但弄清楚了委托究竟是怎么一回事還是有助于大家更好的開發。

委托是C#中非常重要的一個概念,并在C#中得到了豐富的應用,如事件,線程等。那什么是委托呢?具體來說,委托是一種引用方法的類型。一旦為委托分配了方法,委托將與該方法具有完全相同的行為。委托方法的使用可以像其他任何方法一樣,具有參數和返回值。

委托具有以下特點:

委托類似于 C++ 函數指針,但它是類型安全的。

委托允許將方法作為參數進行傳遞。

委托可用于定義回調方法。

委托可以鏈接在一起;例如,可以對一個事件調用多個方法。

方法不需要與委托簽名精確匹配。有關更多信息,請參見協變和逆變。

C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。

在C#中使用委托分為三步:

1.定義委托:

  1. //聲明委托  
  2. public delegate void MyDel(); 

2.實例化委托:

  1. TestDel t = new TestDel();   
  2. Console.WriteLine("-----以下是簡單使用委托演示--------");  
  3. //t.MyMethod();  
  4.  
  5. ///實例化委托,用一個方法來進行實例化  
  6. ///該方法簽名要與委托簽名一致  
  7. MyDel del = new MyDel(t.MyMethod); 

3.調用委托:

  1. ///調用委托  
  2. del(); 

好了,其實委托的變化很復雜,但基本都會符合這么三個步驟,說過了,這些,再來看一下完整的代碼

  1. namespace DelegateDemo{    
  2.   //聲明委托      
  3. public delegate void MyDel();      
  4. //聲明帶參的委托      
  5. public delegate void MyDel2(int num1, int num2);      
  6. //聲明帶有返值的委托      
  7. public delegate string MyDel3(string s);      
  8. //聲明委托用于演示匿名方法    
  9.   public delegate string ProcessString(string s);    class Program     
  10.  {          
  11. static void Main(string[] args)        
  12.   {           
  13.    #region 委托演示                       
  14.                /*       
  15.        TestDel t = new TestDel();                
  16.         #region 簡單實例化委托與調用委托        
  17.       Console.WriteLine("-----以下是簡單使用委托演示--------  
  18. ");             
  19.  //t.MyMethod();       
  20. ///實例化委托,用一個方法來進行實例化         
  21.      ///該方法簽名要與委托簽名一致    
  22.           MyDel del = new MyDel(t.MyMethod);                    
  23.      ///調用委托          
  24.     del();        
  25.       //C#2.0后可以這種方式實例化委托          
  26.     MyDel del4 = t.MyMethod;           
  27.    del4();        
  28.      //用靜態方法進行實例化     
  29.          del4 = TestDel.MyStaticMethod;      
  30.         del4();           
  31.    //以下代碼效果相同        
  32.       //MyDel2 del2 = new MyDel2(t.MyMethod);            
  33.   //del2(10, 20);          
  34.     MyDel2 del2 = t.MyMethod;           
  35.    del2(10, 20);           
  36.    //MyDel3 del3 = new MyDel3(t.MyMethod);          
  37.     //Console.WriteLine(del3("abc"));         
  38.    #endregion             
  39.             #region 匿名方法實例化委托          
  40.   Console.WriteLine("-----以下是匿名方法演示--------");           
  41.    //用匿名方法實例化委托         
  42.      ProcessString p = delegate(string inputString) {            
  43.       return inputString.ToUpper();      
  44.         };      
  45.         //通過委托調用匿名方法         
  46.      Console.WriteLine(p("aaaa"));        
  47.     #endregion            
  48.   #region 委托多播演示             
  49.  Console.WriteLine("-----以下是委托多播演示--------");            
  50.   MyDel mydel1 = t.MyMethod;      
  51.         MyDel mydel2 = t.MyMethod2;       
  52.        MyDel mydel3 = TestDel.MyMethod3;      
  53.       MyDel allMyDel = mydel1 + mydel2 + mydel3;       
  54.      allMyDel();           
  55.    allMyDel -= mydel3;       
  56.        allMyDel();            
  57.   #endregion                 
  58.        #region 委托作為參數演示         
  59.      Console.WriteLine("-------以下是委托作為參數演示------");      
  60.         MyDel3 paramMyDel3 = t.MyMethod;         
  61.    TestDel.MyParamMethod("aaa", paramMyDel3);        
  62.     #endregion           
  63.    #region 委托作為返回值          
  64.     Console.WriteLine("---以下是委托作為返回值演示------");          
  65.     ///returnMyDel指向t.MyReturnMethod()的返回值          
  66.   MyDel3 returnMyDel = t.MyReturnMethod();        
  67.       ///returnMyDel指向t.MyMethod          
  68.     //MyDel3 returnMyDel = t.MyMethod;     
  69.          Console.WriteLine(returnMyDel("sssssssssssss"));        
  70.       #endregion         
  71.       */           
  72.    #endregion           
  73.    //MyReturnDelegateTest my = new MyReturnDelegateTest();       
  74.        //my.MyTest();         
  75.      MyParamDelegateTest myParam = new MyParamDelegateTest();         
  76.      myParam.AddBooks();        
  77.       myParam.MyTest();        
  78.   }    }    public class TestDel   
  79.    {    
  80.       #region 普通方法        
  81.   public static void MyStaticMethod()       
  82.    {            
  83.   Console.WriteLine("My Static Method");     
  84.      }      
  85.     public void MyMethod()     
  86.      {            Console.WriteLine("MyMethod");   
  87.        }        public void MyMethod2()        {       
  88.      Console.WriteLine("My Method 22222222222");      
  89.     }       
  90.    public static void MyMethod3()      
  91.     {          
  92.     Console.WriteLine("My Method 3333333333333");     
  93.    }        
  94.   public void MyMethod(int num1, int num2)       
  95.  {     
  96.        Console.WriteLine(num1+num2);    
  97.       }        
  98.   public string MyMethod(string s)    
  99.       {            return s.ToUpper();      
  100.     }        #endregion         
  101.  /// <summary>       
  102.    /// 委托作為方法參數      
  103.     /// </summary>        
  104.   /// <param name="s"></param>       
  105.    /// <param name="del3"></param>      
  106.     public static void MyParamMethod(string s, MyDel3 del3)   
  107.      {         
  108.      Console.WriteLine(del3(s));      
  109.     }        /// <summary>    
  110.       /// 委托作為返回值        
  111.   /// </summary>       
  112.    /// <param name="s"></param>      
  113.     /// <returns></returns>     
  114.      public MyDel3 MyReturnMethod()      
  115.     {              
  116. ///返回符合委托規范的方法        
  117.      return MyMethod;        
  118.   }    } 

委托作為參數示例:

委托作為參數

  1.   public class MyParamDelegateTest    
  2.   {      
  3.     BookDB bookDB = new BookDB();    
  4.       public void AddBooks()       
  5.  {                
  6.  bookDB.AddBook(new Book() { BookID=1,BookName="C#",Price=123,IsPaperbook=true });           
  7.  bookDB.AddBook(new Book() { BookID = 1, BookName = "C#", Price = 123, IsPaperbook = false });     
  8.  bookDB.AddBook(new Book() { BookID = 2, BookName = "ASP.Net", Price = 12, IsPaperbook = true });             
  9.  bookDB.AddBook(new Book() { BookID = 1, BookName = "ADO", Price = 23, IsPaperbook = false });   
  10.      }       
  11.    /// <summary>         
  12.  /// 用來實例化委托        
  13.   /// </summary>        
  14.   /// <param name="b"></param>       
  15.    public void TestProcessBook(Book b)     
  16.    {           
  17.  if (b.IsPaperbook)            {          
  18.       Console.WriteLine(b.BookName);           
  19.    }        }     
  20.      double total = 0;      
  21.  public void TotalPrice(Book b)    
  22.    {            total += b.Price;       
  23.  }        public void MyTest()        {                        
  24.  //ProcessBook p=TestProcessBook;             
  1.  //ProcessBook p1=TotalPrice;           
  2.    //ProcessBook p2=p+p1;         
  3.      //把方法名做為參數進行傳遞        
  4.       bookDB.PrintBook(TestProcessBook);      
  5.       bookDB.PrintBook(TotalPrice);        
  6.     Console.WriteLine(total);        
  7.   }    }     
  8.  public delegate void ProcessBook(Book b);  
  9.   public class BookDB    {    
  10.       public List<Book> books = new List<Book>();    
  11.     public void AddBook(Book b)     
  12.      {          
  13.     books.Add(b);       
  14.    }         
  15.  public void PrintBook(ProcessBook process)     
  16.    {          
  17.     foreach (var book in books)            {       
  18.          process  
  19. (book);            }            
  20.           }    }    public class Book     
  21.  {        public int BookID { getset; }       
  22.    public string BookName { getset; }      
  23.     public double Price { getset; }    
  24.       public bool IsPaperbook { getset; }   
  25.    } 

委托作為返回值:

委托作為返回值

  1.  public delegate int MyReturnDelegate(int num1, int num2);   
  2.  public class MyReturnDelegateTest    {        
  3. public void MyTest()      
  4.   {         
  5.    MyCalcuate myCalcuate = new MyCalcuate();        
  6.     do      
  7.       {              
  8.   Console.WriteLine("請輸入符號進行以計算( + - * /)");            
  9.     string oper = Console.ReadLine();           
  10.      Console.WriteLine("請輸入操作數1");       
  11.          string num1 = Console.ReadLine();          
  12.       Console.WriteLine("請輸入操作數2");              
  13.   string num2 = Console.ReadLine();           
  14.      MyReturnDelegate myReturn = myCalcuate.Calcuate(oper);          
  15.       int result = myReturn(int.Parse(num1), int.Parse(num2));              
  16.   Console.WriteLine(                 
  17.    string.Format("{0}{1}{2}={3}", num1,oper,num2, result));            
  18.     Console.WriteLine("您還要繼續嗎?Y/N");               
  19.  //string continueFlag = Console.ReadLine();               
  20.  //if (continueFlag.ToUpper() == "N") break;            
  21. while (Console.ReadLine().ToUpper()!="N");        }    
  22. }     
  23. ublic class MyCalcuate   
  24.  {        
  25. public MyReturnDelegate Calcuate(string oper)        {            
  26. MyReturnDelegate myReturn = null;         
  27.    switch (oper)     
  28.        {                case "+":              
  29.       myReturn = delegate(int num1, int num2) { return num1 + num2; };              
  30.       break;              
  31.   case "-":                  
  32.   myReturn = delegate(int num1, int num2) { return num1 - num2; };              
  33.       break;           
  34.      case "*":                   
  35.  myReturn = delegate(int num1, int num2) { return num1 * num2; };                
  36.     break;             
  37.    case "/":          
  38.           myReturn = delegate(int num1, int num2) { return num1 / num2; };     
  39.                break;              
  40.   default:                  
  41.   break;            }     
  42.        return myReturn;       
  43.  }    } 
原文鏈接:http://www.cnblogs.com/yangyancheng/archive/2011/04/21/2024145.html
責任編輯:彭凡 來源: 博客園
相關推薦

2015-03-04 14:54:47

DockerIT管理基礎設施

2011-06-24 14:18:40

Firefox 5

2010-05-10 11:08:28

IPv6

2013-12-02 14:07:02

Hadoop大數據集群

2020-01-17 06:12:10

物聯網IOT技術

2021-01-28 10:17:54

人工智能AI機器學習

2014-06-20 14:35:48

浪潮數據

2024-03-21 08:57:39

語言軟件開發

2020-06-04 13:52:00

CRM選型

2021-09-05 08:46:29

CSPM網絡安全網絡攻擊

2015-09-16 14:13:53

應用集成應用開發企業架構

2015-05-21 10:03:04

應用標題ASO

2020-09-28 07:56:16

Python3.9Python開發

2010-05-21 09:21:48

PHPPHP開發者

2010-06-11 14:46:38

可路由協議

2015-01-20 11:24:52

Win 10

2011-06-14 14:04:11

測試用例

2017-11-30 12:23:55

IO性能RAID

2022-02-16 08:01:45

網絡安全趨勢

2020-11-30 13:12:04

Linux文本命令
點贊
收藏

51CTO技術棧公眾號

久久精品xxx| 国产日韩在线播放| theav精尽人亡av| av一区在线播放| 亚洲另类中文字| 好吊色欧美一区二区三区四区 | 久久99性xxx老妇胖精品| 欧美亚洲国产一区二区三区| 成人在线免费观看视频网站| 天天色棕合合合合合合合| 日本成人在线不卡视频| 欧美精品xxx| 亚洲精品自拍视频在线观看| 精品人人人人| 91.com视频| 无码日韩人妻精品久久蜜桃| 调教一区二区| 国产女同互慰高潮91漫画| 91成人在线看| 一区二区视频网| 校园激情久久| 久久久久久久一区二区| 欧美性猛交xxxx乱大交少妇| 国产精品极品在线观看| 欧美一区二区三区免费视频| 女人另类性混交zo| 3344国产永久在线观看视频| 亚洲天堂a在线| 日本一区二区在线视频观看| 丁香花免费高清完整在线播放| 美女www一区二区| 国产成人免费av电影| 国产在线视频卡一卡二| 91精品动漫在线观看| 尤物九九久久国产精品的分类| 欧美极品jizzhd欧美仙踪林| 国产精品毛片无码| 欧美视频一区二区在线观看| 日韩精品一区二区三区久久| 青草在线视频| 一区二区三区欧美| 中文字幕一区二区三区四区五区人 | 欧美18视频| 欧美 日韩 国产 在线| 国产精品乡下勾搭老头1| 91精品久久久久久久久久久 | 91精品国产综合久久久蜜臀图片 | 韩国成人在线| 日本福利一区二区| 国产第一页视频| 男人最爱成人网| 色爱区综合激月婷婷| 激情五月开心婷婷| 成人自拍av| 欧美视频在线观看一区| 一级黄色特级片| 少妇高潮一区二区三区99| 欧美日韩一级二级三级| 久久黄色片网站| av在线亚洲一区| 日韩一区二区三区在线| 乱码一区二区三区| 国产精品调教| 精品中文字幕久久久久久| 人人妻人人藻人人爽欧美一区| 欧美男gay| 中文字幕国产亚洲2019| 羞羞在线观看视频| 综合一区av| 国外成人在线播放| 亚洲欧美偷拍视频| 国产精品jizz在线观看美国| 欧美精品videos另类日本| 日本中文字幕免费观看| 亚洲欧美日韩国产一区二区| 日韩美女在线播放| 国产一区二区网站| 高清在线不卡av| 久久久久资源| 丝袜美腿美女被狂躁在线观看| 亚洲欧美日韩中文字幕一区二区三区| www.男人天堂网| 成人免费看视频网站| 欧美羞羞免费网站| 波多野吉衣在线视频| 亚洲欧洲av| 日韩一级黄色av| 日本午夜小视频| 日本成人在线不卡视频| 国产高清自拍一区| 国产一级网站视频在线| 一区二区三区四区高清精品免费观看 | 黄色毛片在线看| 亚洲免费观看视频| 又粗又黑又大的吊av| 色综合视频一区二区三区日韩| 欧美www视频| wwwww黄色| 99在线观看免费视频精品观看| 国产精品2018| 亚洲欧美激情在线观看| 国产欧美视频一区二区| 东北少妇不带套对白| 国产成人免费| 日韩久久免费电影| 18岁成人毛片| 欧美a级一区二区| 欧美日韩一区三区四区| 久久一区二区三区av| 麻豆传媒视频在线| 日韩欧美有码在线| 91视频免费入口| 成人一二三区| 欧美在线国产精品| www.99视频| 国产精品久久久久桃色tv| 国产视频一视频二| 亚洲乱码一区| 久久精品中文字幕电影| 精品人妻一区二区色欲产成人| 国产99久久久国产精品免费看| 亚洲成人自拍| 欧美成人资源| 国产视频在线一区二区| 国产精品 欧美 日韩| 国内外成人在线| 台湾成人av| 欧美片第一页| 日韩精品亚洲视频| 日本少妇在线观看| 成人免费视频视频在线观看免费 | 国产一二区在线观看| 欧美这里有精品| 国产特级黄色录像| 国产模特精品视频久久久久| 国语精品免费视频| www在线观看黄色| 精品国产乱码久久久久久牛牛 | 在线观看国产免费视频| 欧美久色视频| 动漫3d精品一区二区三区| dj大片免费在线观看| 欧美精品一二三四| 亚洲伦理一区二区三区| 久久99精品国产麻豆婷婷洗澡| 日本一区二区三区精品视频| 欧美成人h版| 亚洲午夜久久久影院| www.国产毛片| 日本一区二区三区视频视频| 我要看一级黄色大片| 日韩中字在线| 91久久精品国产91久久| 成人看片免费| 日韩精品一区二区三区在线| 久久久久久免费观看| 不卡的av网站| 欧美v在线观看| 国产99久久精品一区二区300| 国产成人精品999| 91激情在线| 这里只有精品视频在线观看| 欧美激情精品久久| 99久久国产综合精品女不卡 | 精品一区二区在线看| 看全色黄大色大片| 99ri日韩精品视频| 91精品国产亚洲| 国产毛片在线| 777xxx欧美| 国产精品23p| 久久久久九九视频| 最新av免费在线观看| 欧美激情麻豆| 欧美成人在线免费观看| 超薄肉色丝袜脚交一区二区| 久久九九全国免费精品观看| 成人久久久精品国产乱码一区二区| 欧美日韩精品在线| 国产又粗又黄又猛| 国产宾馆实践打屁股91| 凹凸国产熟女精品视频| 99精品国产一区二区三区| 国产91aaa| 福利一区视频| 国内精品久久久久影院 日本资源| 欧美成人综合在线| 91精品国产品国语在线不卡| 色婷婷在线观看视频| 国产精品久久久久久一区二区三区 | 国产一区二区三区视频在线观看 | 国产精品资源网站| 久久久免费视频网站| 99久久夜色精品国产亚洲狼| 国产无套精品一区二区| 99久久er| 国产91精品久久久久久久| 黄色在线免费| 亚洲香蕉成人av网站在线观看| 精品国产乱码久久久久久蜜臀网站| 欧美日韩激情美女| 99热精品免费| 欧美国产日韩亚洲一区| 怡红院一区二区| 麻豆国产精品视频| 91免费视频网站在线观看| 91精品国产自产在线观看永久∴| 欧美一进一出视频| 国产精品中文字幕制服诱惑| 国产精品网站大全| av日韩亚洲| 亚洲 日韩 国产第一| 国产高清一区二区三区视频| 亚洲天堂免费观看| 色婷婷av一区二区三区之红樱桃| 欧美精品九九99久久| 99久久久久久久久| 五月激情综合网| 欧美人妻精品一区二区三区| 国产精品久久99| 国产一级久久久久毛片精品| av一区二区不卡| 又色又爽又黄18网站| 国产一区二区日韩精品| 五月婷婷六月丁香激情| 日韩av中文在线观看| 国产精品50p| 国产视频久久| 国产美女主播在线播放| 欧美私人啪啪vps| 久久国产精品免费观看| 香蕉视频国产精品| 欧美爱爱视频网站| 久久精品高清| 一个色的综合| 久久一区二区中文字幕| 亚洲v国产v| 色135综合网| 一区二区三区av| 久久资源中文字幕| 国产a级片免费看| 97精品97| 黄色影视在线观看| 在线国产一区二区| japanese在线播放| 欧美日本二区| 国产二区视频在线| 亚洲日韩视频| 岳毛多又紧做起爽| 日韩影院精彩在线| 岛国毛片在线播放| 国产在线精品国自产拍免费| 人妻换人妻仑乱| 国产成人午夜视频| 香港三日本8a三级少妇三级99| a在线播放不卡| 午夜理伦三级做爰电影| 久久精品无码一区二区三区| 摸摸摸bbb毛毛毛片| 亚洲国产精品成人久久综合一区| 日韩精品电影一区二区三区| 亚洲日本在线视频观看| 清纯粉嫩极品夜夜嗨av| 婷婷国产v国产偷v亚洲高清| www.国产一区二区| 欧美日韩综合一区| av在线亚洲天堂| 亚洲精品999| 成人在线观看网站| 久久综合国产精品台湾中文娱乐网| 人交獸av完整版在线观看| 97在线视频免费看| 巨胸喷奶水www久久久| 91牛牛免费视频| 欧美交a欧美精品喷水| 亚洲 国产 日韩 综合一区| 欧美福利电影在线观看| 91精品91久久久中77777老牛| 蜜臀久久99精品久久久久宅男| 国产欧美精品一二三| 99久久久久免费精品国产| 蜜桃传媒一区二区亚洲| 亚洲欧美日韩国产另类专区| 美日韩一二三区| 欧美久久一区二区| 天天干视频在线| 日日骚av一区| 亚洲天堂手机| 91久久精品美女| 精品国产精品国产偷麻豆| 乱子伦一区二区| 日日夜夜一区二区| 国产无套精品一区二区三区| 国产欧美日韩在线看| 欧美日韩人妻精品一区二区三区| 欧美性jizz18性欧美| 国产美女三级无套内谢| 日韩精品亚洲视频| 欧美一区二区三区成人久久片| 日韩美女毛片| 久久免费一级片| 视频一区免费在线观看| wwwww在线观看| 国产精品美女久久久久久久久 | 亚洲男同gay网站| 国产成人短视频| 91蝌蚪精品视频| 一道精品一区二区三区| 久久成人国产| av不卡中文字幕| 亚洲免费观看高清完整| 一级黄色大片视频| 亚洲精品在线网站| www.欧美日本韩国| 国产精品视频久久久久| 亚洲最大在线| 日本在线xxx| 国产精品亚洲一区二区三区在线| 精品人妻中文无码av在线| 懂色av中文一区二区三区天美| 国产偷拍一区二区| 日韩中文娱乐网| 澳门av一区二区三区| 精品视频免费观看| 在线观看视频日韩| 台湾佬美性中文| 亚洲在线中文字幕| 国产jzjzjz丝袜老师水多| 久久精品国产亚洲7777| 亚洲爱爱视频| 神马欧美一区二区| 久久美女性网| 欧美特级黄色录像| 色婷婷av久久久久久久| 五月天激情婷婷| 97视频com| 同性恋视频一区| 女人和拘做爰正片视频| 不卡一卡二卡三乱码免费网站| 国产极品美女高潮无套嗷嗷叫酒店| 日韩视频一区在线观看| 羞羞的视频在线观看| 亚洲free性xxxx护士hd| 欧美成熟视频| 一级黄色大片免费看| 亚洲图片自拍偷拍| 手机av免费在线观看| 7m第一福利500精品视频| 欧美成人午夜77777| 黄色一级在线视频| 久久欧美一区二区| 无码人妻精品一区二区50| 一本色道久久88亚洲综合88| 日韩一区二区三区免费视频| 日韩精品一区二区三区四区五区 | 欧美三级电影在线看| av资源种子在线观看| 成人亚洲激情网| 中文字幕一区二区三三| 精品1卡二卡三卡四卡老狼| 亚洲成人在线观看视频| 天天在线女人的天堂视频| 欧洲精品在线视频| 欧美日韩在线二区| 国产探花在线看| 亚洲一区二三区| 台湾av在线二三区观看| 国产精品久久久久久亚洲影视| 国产精品国产一区| 动漫美女无遮挡免费| 欧美日韩中文字幕综合视频| 成人欧美一区| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品v亚洲精品v日韩精品 | 性欧美在线视频| 亚洲国产欧美一区二区三区丁香婷| 亚洲欧美色视频| 成人黄色激情网| 激情综合在线| 久久久久亚洲AV成人无在| 欧美一二三四在线| 色尼玛亚洲综合影院| 天天爱天天做天天操| 91视频在线看| 国产日韩一级片| 日本精品久久久久影院| 中文字幕免费精品| 在线观看日韩精品视频| 欧美一级片免费看| 亚洲最新无码中文字幕久久| 天天爱天天做天天操| 久久综合给合久久狠狠狠97色69| 亚洲天堂久久久久| 88国产精品欧美一区二区三区| 国产精品久久久久久久久妇女| 91九色蝌蚪porny| 制服丝袜日韩国产| 欧美日韩五码| 精品这里只有精品| 日韩美女视频一区|