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

首頁 > 編程 > C# > 正文

C#零基礎學習理解委托

2020-01-24 03:35:58
字體:
來源:轉載
供稿:網友

   說來慚愧,在大學的課程中,竟然沒有聽說過委托這個名稱。那么今天我就帶著大家一起探討下委托和事件。

咱們先來看下委托

我主要從以下幾個方面講解

1,  為什么使用委托  2.什么是委托  3.委托如何使用

為什么使用委托?

委托是c#中非常重要的一個概念,使用委托使程序員可以將方法引用封裝在委托對象內。然后可以將該委托對象傳遞給可調用所引用方法的代碼,而不必在編譯時知道將調用哪個方法。與C或C++中的函數指針不同,委托是面向對象,而且是類型安全的。

什么是委托?

委托是一種引用方法的類型,一旦為委托分配了方法,委托將與該方法具有相同的行為,委托方法的使用和其他方法一樣,具有參數和返回值。

如何使用委托

下面咱們就拋開枯燥的概念,來看幾個活生生的例子是怎么使用委托的吧!

 案例1:中國人和英國人問好

 分析:1.首先我們需要編寫一個中國人問好的方法和一個英國人問好的方法。

       2.編寫一個Greet方法,將問好方法作為一個參數,實現各個國家人的問好方法。

       3.使用委托實現各個國家人的問好功能

  使用委托分為三個步驟:1,定義委托  2.聲明委托變量  3.使用委托

復制代碼 代碼如下:

      // 1.定義委托

       public delegate void GreetDelegate(string name);

      class Program

    {

        static void Main(string[] args)

        {

                     //2.聲明委托變量

 GreetDelegate dDelegate = new GreetDelegate(ChineseGreeting);

//3.使用委托

            dDelegate("李小龍");

            Console.ReadKey();

        }

//中國人問好方法

        public static void ChineseGreeting(string name)

        {

            Console.WriteLine("早上好!" + name);

        }

        //英國人問好方法

        public static void EnglishGreeting(string name)

        {

            Console.WriteLine("Morning!" + name);

        }

        public static void Greet(string name, GreetDelegate makeGreet)

        {

            makeGreet(name);

        }

  }


為了加深大家對委托的理解,我們再來寫一個相似的例子。

案例2:翻譯案例:通過委托將英文翻譯為中文和韓文

復制代碼 代碼如下:

//01.聲明一個委托類

public delegate void MyTransDelegate(string words);

class Program

    {

        static void Main(string[] args)

        {

            //翻譯方法

            //調用方法一

            //2.聲明委托

            MyTransDelegate del=new MyTransDelegate(TransToCN);

            //3.調用委托

            del("aa");

//調用方法二

            Translate("aa",TransToCN);

            //調用方式三

            //MyTransDelegate del = TransToCN;

            //del("aa");

             Console.ReadKey();

        }

 

static  void Translate(string str,MyTransDelegate del)

        {

            del(str);

        }

        static void TransToCN(string str)

        {

            Console.WriteLine("翻譯成中文了!");

        }

        static void TransToKorean(string str)

        {

            Console.WriteLine("翻譯成韓語了!");

        }

}


通過這個案例,我們可以看出使用委托的方法不止一種,無論使用哪種方式,最終都和方式一一樣。通過反編譯我們可以證明:

如下圖示我通過反編譯看到方法二的代碼:

 

如下是反編譯后方法三的代碼

 

有了上述知識存儲,我們再來看一個案例:

案例3:通過委托將子窗體中的值傳遞到父窗體中

如圖有父窗體和子窗體兩個窗體,現在我想實現當點擊父窗體中按鈕時彈出子窗體(當然這個超級簡單),在彈出子窗體后,在子窗體的文本框中輸入內容,點擊關閉按鈕后子窗體關閉,并且將子窗體中輸入的內容在父窗體的文本框中顯示。

 

子窗體中代碼如下:

復制代碼 代碼如下:

//定義委托

        public delegate void Words(string words);

        //聲明委托變量

        public Words words;

        private void button1_Click(object sender, EventArgs e)

        {

            words(txtchild.Text);

            this.Close();

        }

父窗體中的代碼:

private void btnOpen_Click(object sender, EventArgs e)

        {

            Child child = new Child();

            child.words = GetWords;

            child.Show();

        }

        public void GetWords(string str)

        {

            txtMain.Text = str;

        }


我們來分析下上述兩斷代碼:

首先,我們想在子窗體關閉時,更新父窗體文本框中的數據。但是我們非常清楚的知道,窗體之間的空間是不能直接相互訪問的,這時我們就要找一個中介幫我們實現父窗體數據的更新功能。于是我們定義了帶一個參數沒有返回值的委托Words,并且在父窗體中定義了一個方法GetWords符合委托的條件。于此同時,在子窗體中聲明了一個委托變量words,并且在關閉按鈕中,調用了委托變量。

但在子窗體中我們沒有對子窗體委托變量賦值,真正的賦值放到了主窗體中。這樣通過委托就實現了在子窗體中調用父窗體的方法,進而實現了父窗體文本框內容的更新。

   不知道,看過上述3個案例,大家對委托有沒有一個相對清晰的認識,如果本文能幫助迷途中的你,那就更好了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美黑人极品猛少妇色xxxxx| 91成人性视频| 日本韩国在线不卡| 欧美成人精品在线视频| 国产精品专区h在线观看| 亚洲国产精品yw在线观看| 国产精品久久久久久久久久免费| 国产手机视频精品| 亚洲人成自拍网站| 亚洲已满18点击进入在线看片| 国产精品电影久久久久电影网| 久久人人爽人人爽人人片av高请| 欧美区在线播放| 精品视频久久久久久久| 精品国产一区二区三区久久久狼| 欧美激情视频一区二区三区不卡| 日韩欧美亚洲国产一区| 欧美一级免费视频| 久久久999精品| 亚洲成人激情图| 岛国精品视频在线播放| 亚洲综合精品伊人久久| 日韩av不卡在线| 日韩精品中文字| 欧美激情网友自拍| 久久综合久久八八| 国产精品日本精品| 欧美最猛性xxxxx(亚洲精品)| 成人黄色免费在线观看| 色综合伊人色综合网| 欧美最猛性xxxxx亚洲精品| 97在线日本国产| 欧美日韩福利在线观看| 亚洲精品日韩丝袜精品| 日韩精品免费在线视频观看| 国产精品狼人色视频一区| 日韩电影大片中文字幕| 91精品啪在线观看麻豆免费| 国产精品小说在线| 综合国产在线视频| 日韩亚洲欧美中文高清在线| 欧美精品免费在线观看| 亚洲国产精品99| 国产日韩欧美自拍| 不卡av日日日| 国产日韩在线精品av| 欧美激情一区二区久久久| 亚洲肉体裸体xxxx137| 人人做人人澡人人爽欧美| 亚洲一区二区三区四区视频| 国产精品老女人精品视频| 欧美日韩性视频在线| 欧美成人午夜剧场免费观看| 亚洲成成品网站| 国产日韩精品一区二区| 一区二区在线免费视频| 日本精品一区二区三区在线| 成人网在线免费观看| 中文字幕精品一区二区精品| 丝袜一区二区三区| 亚洲国产精品网站| 久久天天躁狠狠躁夜夜爽蜜月| 国产成人亚洲综合青青| 色综合天天综合网国产成人网| 性亚洲最疯狂xxxx高清| 国产精品成人av性教育| 国外成人在线播放| 日韩精品视频三区| 亚洲网站视频福利| 精品国产老师黑色丝袜高跟鞋| 亚洲精品视频免费在线观看| 日韩美女在线播放| 最近2019中文免费高清视频观看www99| 久久久免费观看| 5566成人精品视频免费| 成人性生交大片免费看小说| 日韩欧美一区二区在线| 精品国产一区二区三区久久| 大胆人体色综合| 日本午夜精品理论片a级appf发布| 日韩av中文字幕在线播放| 国产精品白嫩美女在线观看| 亚洲欧美一区二区三区四区| 奇米影视亚洲狠狠色| 日韩av在线免费观看| 国产成人亚洲综合91精品| 国产精品永久在线| 亚洲精品456在线播放狼人| 欧美孕妇与黑人孕交| 中文字幕综合一区| 国产精品xxx视频| 在线看欧美日韩| 9.1国产丝袜在线观看| 国产专区精品视频| 成人免费大片黄在线播放| 亚洲激情自拍图| 日韩欧美亚洲成人| 久久久人成影片一区二区三区观看| 日本精品一区二区三区在线播放视频| 欧美日韩在线影院| 久久久久免费视频| 国产91在线播放精品91| 精品一区二区亚洲| 色偷偷av一区二区三区| 色中色综合影院手机版在线观看| 日韩国产欧美精品一区二区三区| 欧美最猛黑人xxxx黑人猛叫黄| 日韩影视在线观看| 亚洲欧美在线播放| 亚洲一区二区三区xxx视频| 欧美日韩在线免费观看| 欧美日韩国产丝袜美女| 亚洲精品免费在线视频| 久久综合伊人77777| 国产日韩欧美在线视频观看| 久久久免费精品视频| 夜夜嗨av色一区二区不卡| 免费91麻豆精品国产自产在线观看| 91麻豆国产语对白在线观看| 91久久综合亚洲鲁鲁五月天| 久久久久国产精品免费| 久久久999国产精品| 三级精品视频久久久久| 国产精品精品视频一区二区三区| 欧美日韩国产123| 福利一区福利二区微拍刺激| 日本欧美在线视频| 91欧美激情另类亚洲| 亚洲第一视频网站| 精品中文视频在线| 菠萝蜜影院一区二区免费| 国产精品久久久久一区二区| 91国产视频在线播放| 中文字幕不卡在线视频极品| 色综合久久88| www.亚洲一区| 久久久久一本一区二区青青蜜月| 国产精品普通话| 国产精品夜色7777狼人| 成人97在线观看视频| 亚洲精品第一页| 亚洲九九九在线观看| 欧美黄色片免费观看| 久久久久久久久国产精品| 国产成人精品在线播放| 亚洲综合色激情五月| 91美女福利视频高清| 啪一啪鲁一鲁2019在线视频| 国产亚洲精品久久久| 永久免费精品影视网站| 91亚洲精品在线观看| 欧美日在线观看| 日韩一区二区欧美| 久久免费视频这里只有精品| 久久久久久亚洲精品中文字幕| 日韩精品免费在线播放| 精品亚洲永久免费精品| 亚洲自拍偷拍网址| 欧美裸体男粗大视频在线观看| 久久久精品2019中文字幕神马| 日韩成人在线免费观看| 国产精品丝袜白浆摸在线| 911国产网站尤物在线观看| 亚洲性无码av在线|