委派 (C# 程式設計手冊)
委派是一種類型,代表具有特定參數清單及傳回型別的方法參考。 當您具現化委派時,可以將其執行個體與任何具有相容簽章和傳回型別的方法產生關聯。 您可以透過委派執行個體叫用 (或呼叫) 方法。
委派可以用來將方法當做引數傳遞給其他方法。 事件處理常式就是透過委派叫用的方法。 建立自訂方法後,像是 Windows 控制項這樣的類別就會在特定事件發生時呼叫您的方法。 下列範例將示範委派宣告:
public delegate int PerformCalculation(int x, int y);
來自符合委派類型之任何可存取類別或結構的任何方法都可以指派給委派。 方法可以是靜態或執行個體方法。 此彈性表示您可以以程式設計方式變更方法呼叫,或將新的程式碼插入現有的類別。
注意
在方法多載的內容中,方法的簽章並不包括傳回值。 不過在委派的內容中,簽章卻包含傳回值。 換句話說,方法必須與委派擁有相同的傳回類型。
由於委派能夠將方法當做參數來參考,因此很適合用來定義回呼方法。 您可以撰寫一個方法,以比較應用程式中的兩個物件。 該方法可用於排序演算法的委派中。 由於比較程式碼與程式庫不同,排序方法可能更一般。
函式指標支援對呼叫慣例需要更多控制能力的類似案例。 使用新增至委派型別的虛擬方法,叫用與委派相關聯的程式碼。 您可以使用函式指標來指定不同的慣例。
委派概觀
委派包含下列屬性:
- 委派與 C++ 函式指標相似,但委派完全為物件導向,而且不像 C++ 指標之於成員函式,會同時委派封裝物件執行個體與方法。
- 委派允許將方法當做參數傳遞。
- 委派可用於定義回呼方法。
- 您可將委派鏈結在一起,例如,可在單一事件上呼叫多個方法。
- 方法不需要完全符合委派型別。 如需詳細資訊,請參閱在委派中使用差異。
- Lambda 運算式為內嵌程式碼區塊撰寫更簡潔的方式。 Lambda 運算式 (在特定內容中) 會編譯為委派型別。 如需 Lambda 運算式的詳細資訊,請參閱 Lambda 運算式。
本節內容
C# 語言規格
如需詳細資訊,請參閱 C# 語言規格中的委派。 語言規格是 C# 語法及用法的限定來源。