委派 (C# 程式設計手冊)

委派是定義方法簽章的型別。 當您執行個體化委派時,可以將其執行個體與任何具有相容簽章的方法產生關聯。 您可以透過委派執行個體來叫用 (Invoke) 或呼叫方法。

委派可以用來將方法當做引數傳遞給其他方法。 事件處理常式就是透過委派叫用的方法。 您建立自訂方法後,Windows 控制項這樣的類別就會在特定事件發生時呼叫您的方法。 下列範例示範委派宣告:

    public delegate int PerformCalculation(int x, int y);

任何來自可存取的類別 (Class) 或結構 (Struct) 且與委派簽章 (由傳回型別和參數所構成) 相符的方法,都可以指派給該委派。 此方法可以是靜態或執行個體方法 (Instance Method)。 如此即可用程式設計的方式變更方法呼叫,也可將新的程式碼外掛到現有的類別中。 只要您知道委派的簽章為何,即可指派自己的方法。

注意事項注意事項

在方法多載的內容中,方法的簽章並不包括傳回值。不過在委派的內容中,簽章卻包含有傳回值。換句話說,方法必須與委派有相同的傳回值。

由於委派能夠將方法當做參數來參考,使得委派很適合用來定義回呼方法。 例如,可以將比較兩個物件的方法參照當成引數傳遞至排序演算法。 因為比較程式碼在獨立的程序中,因此排序演算法可以以較通用的方式寫入。

委派概觀

委派有下列屬性:

  • 委派與 C++ 函式指標類似,但為型別安全。

  • 委派允許將方法當做參數傳遞。

  • 委派可用於定義回呼方法。

  • 您可將委派鏈結在一起,例如,可在單一事件上呼叫多個方法。

  • 方法不需要完全符合委派簽章。 如需詳細資訊,請參閱 在委派中使用變異數 (C# 和 Visual Basic)

  • C# 2.0 版引進了匿名方法 (Anonymous Method) 的概念,讓程式碼區塊能夠當做參數傳遞,以取代個別定義的方法。 C# 3.0 引進 Lambda 運算式,做為更簡潔的內嵌 (Inline) 程式碼區塊撰寫方式。 匿名方法與 Lambda 運算式 (在特定內容中) 都會編譯為委派型別 (Delegate Type)。 現在,這些功能合稱為「匿名函式」(Anonymous Function)。 如需 Lambda 運算式的詳細資訊,請參閱 匿名函式 (C# 程式設計手冊)

本章節內容

C# 語言規格

如需詳細資訊,請參閱 C# 語言規格。語言規格是 C# 語法和用法的限定來源。

精選書籍章節

C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmersDelegates, Events, and Lambda Expressions

Learning C# 3.0: Master the fundamentals of C# 3.0Delegates and Events

請參閱

參考

事件 (C# 程式設計手冊)

Delegate

概念

C# 程式設計手冊