【問題】
C#想要傳遞函數參數,但是參數類型是函數,不知道如何傳遞。
【解決過程】
1.找了半天,看到這里:把函數名作為參數傳遞–C#委托的聲明和使用,說到用delegate,但是感覺有點復雜,而且不太像是能方便的解決此處的問題。
2.說實話,找了其他一些類似的帖子,還是沒太看懂。
3. 不過最后還是自己在他們的描述的基礎上,自己折騰出來了。
【總結】
將函數當做參數,傳遞到別的函數中,的確是通過代理實現的。
總體思路是:
1.先建一個delegate的函數,delegateFunc該函數的參數格式,要和你想要傳遞的那個函數funcToDelegate一致。即,參數個數,參數變量類型,順序等都一樣。
2.然后別的某個函數,比如beCalledFunction中,其參數,就可以支持帶delegate類型的函數作為參數了。
3.然后你在另外的其他的地方,某個函數anotherFunc中,就可以調用該beCalledFunction函數,把原先的funcToDelegate當做參數一樣,傳遞過去了。
通過例子,就很容易說明具體是如何操作的了:
原先代碼如下:
加了代理,使得可以將函數作為參數傳遞,變成了這樣:
