FUNC與Action 簡單範例及使用時機簡述
一.簡介Action 及 FUNC
委托:方法參數化(委托、委派)。
1.Action:委派,無回傳值。(若沒回傳值則使用Action)
使用方法:
宣告Action<參數類型1,參數類型2....>
呼叫Action(參入1,參數2)
2.FUNC:委派,有回傳值。
使用方法:
宣告FUNC<參數類型1,參數類型2....,回傳值類型>
呼叫var value= FUNC(參數類型1,參數類型2....)
二.範例說明:
驗證該人員是否為臥底,自訂一個委派的方法來驗證是否為臥底。
使用委託的目地:因為驗證人員是否為臥底的條件都不同,所以將方法參數化(委託)可使驗證的自由度提高。
範例開始,以下範例都做同一件事情,那就是確認是否為臥底,只是使用的方法不同,請注意變數命名,有助於程式的可讀性。
人員類別(公用):
1.FUNC方法一
指定一個現有方法為驗證的委派(條件)。(行14;行26~34 此為驗證條件)
2.FUNC方法二
使用Lamda不指定方法,直接於TryConditionOfUndercover傳參時傳入委派的定義。(行44~49)
3.Action方法一
指定一個現有方法為驗證的委派(條件),由於無回傳值,故無法從委派方法得知是否為臥底,所以藉由委派內的方法輸出結果。(行15;行23~29 此為驗證條件)
4.Action方法二
使用Lamda不指定方法,,直接於TryConditionOfUndercover傳參時傳入委派的定義。(行36~40 此為驗證條件)
以上各個方法的輸出結果:
小結:使用委派的時機,為輸入條件不變,但規則可任意改變時。例如此範例:要驗證的輸入條件為Employee,但驗證方法可以因不同的時機而改變,故使用委派。
附上實作範例程式:FuncByFindingUndercover.rar
By-藍小伙- 要習慣多層的委派,在搭上反射!