欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#中怎么委托

這篇文章主要為大家展示了“C#中怎么委托”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C#中怎么委托”這篇文章吧。

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站負(fù)責(zé)任的成都網(wǎng)站制作公司!

一、是什么

1)委托包含對方法而不是方法名稱的引用。使用委托可以在運(yùn)行時(shí)動(dòng)態(tài)設(shè)定要調(diào)用的方法,不知道方法名稱,也可以調(diào)用方法,執(zhí)行(或調(diào)用)一個(gè)委托將執(zhí)行該委托引用的方法。

2)委托將名稱與方法的定義連接起來,即將方法的實(shí)現(xiàn)附加到該名稱。這樣便可以使用該名稱調(diào)用特定的方法。但是,委托要求方法的實(shí)現(xiàn)和委托必須具有相同的方法簽名(也就是說,他們應(yīng)該具有相同數(shù)量/類型的參數(shù)),并有相同類型的返回值。

3)委托更像一個(gè)具有通用的方法名稱,在不同的情況將該名稱指向不同的方法,并通過委托執(zhí)行這些方法。

二、怎么用

使用委托包括三個(gè)步驟:

1)定義委托

2)實(shí)例化委托

3)使用委托

我們上一個(gè)例子:

class Program
{
    //定義一個(gè)委托
    public delegate int Call(int num1, int num2);
                                                     
    class Math
    {
        public int Mutiply(int num1, int num2)
        {
            return num1 * num2;
        }
                                                     
        public int Divide(int num1, int num2)
        {
            return num1 / num2;
        }
    }
                                                     
    static void Main(string[] args)
    {
        Call objCall;
        Math objMath = new Math();
        objCall = new Call(objMath.Mutiply);//實(shí)例化一個(gè)委托
                                                     
        int result = objCall(5, 3);//使用委托
        Console.WriteLine("結(jié)果為 {0}", result);
    }
}

上面的例子,我們再進(jìn)一步,用匿名委托實(shí)現(xiàn):

static void Main(string[] args)
{
    Call objCall = delegate(int num1, int num2) { return num1 * num2; };//匿名委托
    int result = objCall.Invoke(3, 5);//使用委托
    Console.WriteLine("結(jié)果為 {0}", result);//輸出:結(jié)果為 15
}

我們還可以將:

int result = objCall.Invoke(3, 5);//使用委托

替換為:

int result = objCall(3, 5);//使用委托

效果是一樣的。

再進(jìn)一步,用Lambda表達(dá)式進(jìn)行簡化,可以將:

Call objCall = delegate(int num1, int num2) { return num1 * num2; };//匿名委托

替換為:

Call objCall = (int num1, int num2) => { return num1 * num2; };//Lambda表達(dá)式

更簡化一步,變?yōu)椋?/p>

Call objCall = (num1, num2) => { return num1 * num2; };//Lambda表達(dá)式

這就是C#委托的進(jìn)化過程以及C#Lambda表達(dá)式對委托的支持。

三、什么時(shí)候用

1)委托類似于C語言中的函數(shù)指針,可以將方法作為函數(shù)的參數(shù)進(jìn)行傳遞

2)當(dāng)不知道方法的具體實(shí)現(xiàn)時(shí),就可以定義個(gè)委托,讓它替我們干活

3)我們在編程時(shí)用的最多的就是事件注冊時(shí)使用。

比如:

this.button1.Click += new EventHandler(button1_Click);//button1注冊Click事件
private void button1_Click(object sender, EventArgs e)
{
    //方法具體實(shí)現(xiàn)內(nèi)容
}

可以看到方法button1_Click作為參數(shù)傳遞給了EventHandler委托。

再比如在線程方法中:

Thread th = new Thread(new ThreadStart(Method));//這里的ThreadStart就是一個(gè)委托,里面可以直接傳一個(gè)方法名Method,以委托的形式調(diào)用方法
th.IsBackground = true;
th.Start();

以上是“C#中怎么委托”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標(biāo)題:C#中怎么委托
分享網(wǎng)址:http://aaarwkj.com/article20/jjphjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、服務(wù)器托管、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
背德人妻中文字幕无修| 亚洲大片色一区在线观看| 午夜视频在线观看麻豆| 色噜噜噜av天堂九区| 精品欧美不卡在线播放| 91免费福利激情视频| 久久夜色一区二区三区| 持续侵犯人妻中文字幕| 不卡的av中文字幕在线播放| 麻豆亚洲av熟女国产| 99久久免费看国产精品| 精品人妻一区二区三区观看| 不卡的国产在线视频| 美女性生活免费视频网站| 欧美一区二区三区十区| 欧美黄片在线播放视频| 欧美日韩一区二区三区666| 欧美日韩久久亚洲精品| 91精品国产自产在线观看 | 亚洲国产精品欧美激情| 91午夜精品亚洲一区二区三区| 色播婷婷午夜激情福利| 国产黄色一区二区三区四区| 亚洲婷婷久久一区二区| 91国内精品手机在线高清| 人妻中文字幕精品系列| 中日中文av一区二区三区| 久久人妻一区二区三区免费密臀| 亚洲欧洲日韩另类在线| 国产精品日本一区二区| 国产男女做爰在线视频| 免费观看黄片视频在线观看| 亚洲欧美日韩在线观看a三区| 少妇精品久久久一区二区三区| 国产婷婷综合一区二区| 精品乱码一区二区三区四区| 91中文字幕在线一区| 黄色永久网站在线播放| 日本精品av免费观看| 厕所偷拍视频一区二区三区| 中文乱码字幕亚洲精品|