<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C#中的委托(一)

      1、委托簡介

      委托和類一樣,是一種用戶自定義的類型,但是類表示的是數據和方法的集合,而委托則持有一個或多個方法,以及一系列預定義的操作。

      可以通過以下操作步驟來使用委托:

      1、聲明一個委托類型。

      2、使用該委托類型聲明一個委托變量。

      3、創建委托類型的對象,把它賦值給委托變量。

      4、可以選擇為委托對象增加其他方法。

      5、在代碼中像調用方法一樣調用委托。

      創建與使用類的步驟與以上步驟差不多,創建和使用類和委托的過程如下:

      image-20231129090052960

      可以把委托看做一個包含有序方法列表的對象,這些方法具有相同的簽名和返回類型。

      方法的列表稱為調用列表。

      委托保存的方法可以來自任何類或結構,只要在下面兩點匹配:

      1、委托的返回類型。

      2、委托的簽名。

      調用列表中的方法可以是實例方法也可以是靜態方法。

      在調用委托時,會執行其調用列表中的所有方法,如下所示:

      image-20231128205903042

      2、委托示例

      先來看下一個簡單的示例,代碼如下:

          internal class Program
        {
             delegate void PrintString(string s);
             class A
            {
                 public void Print1 (string s)
                {
                     Console.WriteLine ($"Print1--{s}");
                }
                 public static void Print2(string s)
                {
                     Console.WriteLine($"Print2--{s}");
                }
            }
             static void Main(string[] args)
            {          
                 A a = new A();
                 PrintString ps;
                 ps = a.Print1;
                 ps += A.Print2;
                 ps("hello");
            }
        }
      }

      輸出結果如下所示:

      image-20231129090848501

      現在來分析一下這段代碼:

      delegate void PrintString(string s);

      定義了一個沒有返回值,參數為string的委托類型,對應步驟中的第一步。

      關于聲明委托類型,圖解如下所示:

      image-20231129091714240

       class A
      {
          public void Print1 (string s)
          {
              Console.WriteLine ($"Print1--{s}");
          }
          public static void Print2(string s)
          {
              Console.WriteLine($"Print2--{s}");
          }
      }

      創建了一個類A,該類含有一個實例方法與一個靜態方法,方法的返回類型和簽名與委托類型一致。

       PrintString ps;

      聲明委托類型的變量,對應上面步驟中的第二步。

       ps = a.Print1;

      實例化并初始化該委托,對應上面步驟中的第三步,也可以使用下面的這種寫法:

       ps = new PrintString(a.Print1);

      推薦使用上面的快捷語法,它僅由方法說明符構成。這種快捷語法能夠工作是因為在方法名稱和其相應的委托類型之間存在隱式轉換。

       ps += A.Print2;

      為委托增加了一個方法。在C#中委托是恒定的,這樣子看好像我們剛剛創建的委托被修改了,其實并沒有被修改,而是創建了一個新的委托。

       ps("hello");

      調用委托,對應上面步驟中的第四步,在本例中圖解如下所示:

      image-20231129093857902

      會依次執行a.Print1和A.Print2,因此結果如下所示:

      image-20231129094038494

      以上就是介紹C#中委托的第一部分,希望對你理解C#中的委托有所幫助。

      3、參考

      《C#圖解教程(第4版)》——Daniel M. Solis

      posted @ 2023-11-29 10:42  mingupupup  閱讀(766)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 六枝特区| 国产精品黄色大片在线看| 青青草国产自产一区二区| 男人av无码天堂| 国产精品福利自产拍久久| 99久久精品久久久久久婷婷| 丁香五月亚洲综合在线国内自拍| 中文字幕av无码免费一区| 日韩大片高清播放器| 综合激情网一区二区三区| 尹人香蕉久久99天天拍欧美p7 | 国产精品无码dvd在线观看| 天堂网av成人在线观看| 少妇高潮喷水正在播放| 高清自拍亚洲精品二区| 国产精品亚洲av三区色| 免费无码av片在线观看播放| 狠狠色婷婷久久综合频道日韩 | 乱色欧美激惰| 国产女人被狂躁到高潮小说| 亚洲国产中文字幕在线视频综合| 亚洲国产精品一区二区第一页| 又黄又爽又色的免费网站| 丰满人妻熟妇乱又仑精品| 亚洲av成人无码天堂| 粗大的内捧猛烈进出小视频| 亚洲一级特黄大片一级特黄| 成人免费A级毛片无码片2022| 婷婷久久综合九色综合88| 亚洲一级特黄大片一级特黄| 最新国产AV最新国产在钱| 惠安县| 久久精品国产一区二区三| 蜜臀av一区二区三区在线| 在线看国产精品自拍内射| 精品亚洲国产成人| 亚洲中文字幕日韩精品| 免费人成视频在线播放| 久久综合伊人| 中文字幕在线观看亚洲日韩| 久久精品国产亚洲av麻豆软件|