首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 委托揭秘 (上):從基本用法到編譯器幕後機制

     編輯:關於C語言

參考資料:《CLR Via C#》第 15.4 節「委托揭秘」(第 281 頁)。

簡單的委托使用範例

以下程式碼展示了委托的基本宣告、實例化與調用流程:

using System;
using System.Collections.Generic;
using System.Text;

namespace Delegate
{
    public class DelegateTest
    {
        protected delegate void MyDelegate();

        private void TestMethod() { }

        private void Method()
        {
            MyDelegate aMyDelegate = new MyDelegate(TestMethod);
            Method(aMyDelegate);
        }

        private void Method(MyDelegate aMyDelegate)
        {
            if (aMyDelegate != null)
            {
                aMyDelegate();
            }
        }
    }
}

表面上看,委托使用起來非常直觀:用 delegate 關鍵字定義,用 new 操作符構造實例,用熟悉的方法調用語法觸發回調。但實際情況遠比這複雜——編譯器與 CLR 在幕後做了大量工作來隱藏複雜性。本文將深入剖析編譯器與 CLR 如何實現委托,助你透徹理解其運作原理,從而更高效地運用委托。

重新審視委托宣告語法

先看這行核心程式碼:

public delegate void MyDelegate();

這行看似簡單的宣告,實則啟動了編譯器的一連串代碼生成邏輯,將在下一篇中詳細拆解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved