亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中怎么委托

發布時間:2021-10-21 14:28:02 來源:億速云 閱讀:135 作者:小新 欄目:編程語言

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

一、是什么

1)委托包含對方法而不是方法名稱的引用。使用委托可以在運行時動態設定要調用的方法,不知道方法名稱,也可以調用方法,執行(或調用)一個委托將執行該委托引用的方法。

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

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

二、怎么用

使用委托包括三個步驟:

1)定義委托

2)實例化委托

3)使用委托

我們上一個例子:

class Program
{
    //定義一個委托
    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);//實例化一個委托
                                                     
        int result = objCall(5, 3);//使用委托
        Console.WriteLine("結果為 {0}", result);
    }
}

上面的例子,我們再進一步,用匿名委托實現:

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

我們還可以將:

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

替換為:

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

效果是一樣的。

再進一步,用Lambda表達式進行簡化,可以將:

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

替換為:

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

更簡化一步,變為:

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

這就是C#委托的進化過程以及C#Lambda表達式對委托的支持。

三、什么時候用

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

2)當不知道方法的具體實現時,就可以定義個委托,讓它替我們干活

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

比如:

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

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

再比如在線程方法中:

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

以上是“C#中怎么委托”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玛多县| 固安县| 榆林市| 奇台县| 贵港市| 枣阳市| 皮山县| 平和县| 合水县| 广平县| 虞城县| 广南县| 营山县| 木里| 沂水县| 叶城县| 宁城县| 丹江口市| 兴仁县| 临城县| 山丹县| 玉溪市| 吴桥县| 桃园市| 石泉县| 中方县| 商水县| 永清县| 清镇市| 信阳市| 芮城县| 庄浪县| 建宁县| 日土县| 安阳县| 疏勒县| 孝感市| 恭城| 汤原县| 呈贡县| 内乡县|