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

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)站
德清县| 樟树市| 哈密市| 乌拉特中旗| 望奎县| 巫山县| 广汉市| 瑞丽市| 交城县| 瑞安市| 南陵县| 丰镇市| 涿州市| 黄陵县| 尼玛县| 徐闻县| 晋江市| 神农架林区| 松滋市| 河西区| 新田县| 沙雅县| 岳阳县| 潞城市| 乐陵市| 盐边县| 微博| 应城市| 大连市| 天峨县| 朔州市| 方正县| 桑植县| 衡阳市| 麻栗坡县| 平乡县| 辛集市| 奈曼旗| 浑源县| 景宁| 房产|