在Unity中經常會向函數傳參,如:
void Start() { Print("Xxx"); } void Print(string name) { base.print(name); }
這是一種傳遞普通參數的方式,無論想輸出什么,只要告訴Print()函數,對方就會幫忙輸出。
那么問題來了,有沒有一種方式可以:無論想調用什么方法,只要告訴某函數(傳參),對方就會幫忙調用呢?
有的,這種方式叫做“委托”。
具體Demo代碼:
class X { //定義委托,括號里參數個數與需要委托執行的函數一致 delegate void Helper(); //輸出A void A() { print("A"); } //輸出B void B() { print("B"); } //調用函數 void Do(Helper h) { h(); } void Start() { //聲明一個委托 Helper helper; //為這個委托賦值,右邊寫的是需要委托的函數名 helper = A; //把傳遞給其他函數,這個函數會幫忙調用我們委托的函數 Do(helper); //同上 helper = B; Do(helper); } }
以上是簡單的實現方式。
與委托伴隨的是事件和Observer模式,以及.NET下的規范寫法
請見C# 中的委托和事件
原創文章,轉載請注明出