成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C#中怎么委托

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

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶和效益!創(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)委托包含對(duì)方法而不是方法名稱的引用。使用委托可以在運(yùn)行時(shí)動(dòng)態(tài)設(shè)定要調(diào)用的方法,不知道方法名稱,也可以調(diào)用方法,執(zhí)行(或調(diào)用)一個(gè)委托將執(zhí)行該委托引用的方法。

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

3)委托更像一個(gè)具有通用的方法名稱,在不同的情況將該名稱指向不同的方法,并通過(guò)委托執(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);
    }
}

上面的例子,我們?cè)龠M(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)行簡(jiǎn)化,可以將:

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

替換為:

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

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

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

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

三、什么時(shí)候用

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

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

3)我們?cè)诰幊虝r(shí)用的最多的就是事件注冊(cè)時(shí)使用。

比如:

this.button1.Click += new EventHandler(button1_Click);//button1注冊(cè)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)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標(biāo)題:C#中怎么委托
分享網(wǎng)址:http://jinyejixie.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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
连城县| 察雅县| 六安市| 灵山县| 隆安县| 洛南县| 积石山| 宁安市| 右玉县| 荃湾区| 潮州市| 常山县| 宁蒗| 乐至县| 曲阜市| 阳春市| 洞头县| 永善县| 连江县| 蓬安县| 涿州市| 华容县| 英超| 弋阳县| 安西县| 叙永县| 台东县| 开化县| 莱芜市| 西安市| 澄江县| 福海县| 潼关县| 金塔县| 盐津县| 兴义市| 博兴县| 恩平市| 塔河县| 怀柔区| 河西区|