共用方式為


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

委派是一種類型,代表具有特定參數清單和傳回類型的方法參考。 當您具現化委派時,可以將其執行個體與任何具有相容簽章和傳回類型的方法產生關聯。 您可以透過委派執行個體叫用 (或呼叫) 方法。

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

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

來自符合委派類型之任何可存取類別或結構的任何方法都可以指派給委派。 方法可以是靜態或執行個體方法。 如此即可用程式設計的方式變更方法呼叫,也可將新的程式碼插入現有的類別中。

注意事項注意事項

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

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

委派概觀

委派包含下列屬性:

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

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

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

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

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

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

本章節內容

C# 語言規格

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

精選書籍章節

C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers 中的Delegates, Events, and Lambda Expressions

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

請參閱

參考

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

Delegate

概念

C# 程式設計手冊