Board logo

標題: (C#) 委派(Delegate) [打印本頁]

作者: 李泳霖    時間: 2024-7-2 09:53     標題: (C#) 委派(Delegate)

委派的概念用白話且正式一點的解釋,就是請A(Delegate)幫我去執行B方法(Method),而這裡的方法也可以稱之為Function,方法長甚麼樣子,那委派也必須長甚麼樣子。也就是說當我要執行的方法,他需要帶入怎樣的參數以及輸出怎樣的參數,那委派也必須帶入與輸出相同類型的參數。
我們使用餐廳點餐的例子,然後今天你們去的餐廳很跩,只有提供兩種餐點,分別為豬排和牛排。另外每次當服務生點餐時,都必須記錄服務生點了甚麼東西,以便於追蹤訂單。
[attach]18957[/attach]

上圖的private string order_pork(string name),就是我們定義的方法,可以看到這方法,他會需要帶入一個string型別的參數,另外他也會輸出型別為string的結果。所以當我們今天要定義一個委派,來去執行這個方法的時候,那我們的委派一樣也要帶入一個型別為string的參數進去,並且也會輸出型別為string的參數結果出來,所以委派的寫法就是public delegate string waiter(string name)。

首先看到waiter waiter1 = new waiter(order_pork)這行程式碼,簡單來說這一行就是在建立一個委派出來,如果覺得文謅謅的,就當作我們建立了一個服務生出來。接著委派的功能就是要幫忙去執行方法,所以我們必須告訴他要執行的方法,也就是說我們要跟服務生說,我想要點甚麼餐,所以這行程式碼的概念如下:
[attach]18958[/attach]

當委派建立好後,下一個步驟就是去執行這個委派,也就是叫服務生幫你去跟主廚點餐,所以執行委派的Code如下。
[attach]18959[/attach]

眼尖的你會發現,這行程式碼怎麼是錯的?別擔心,上面只是給大家看,真正執行委派的做法而已。由於我們點餐的方法規定要帶入一個string的參數進去,也就是服務生的名子,另外也要輸出該服務生點了甚麼餐,所以在這個範例中,正確的寫法會像是下圖的Code:
[attach]18960[/attach]




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2