當前位置:股票大全官網 - 股票投資 - 對C#回調函數了解不多。我先定義了壹個回調函數,但是它在別的地方實現了嗎?

對C#回調函數了解不多。我先定義了壹個回調函數,但是它在別的地方實現了嗎?

“回調函數”這個詞來自於Javascript等函數式編程語言,C#裏沒有這個概念,所以誰在妳的代碼裏做註釋,說明他不太喜歡C#。

CALLBACK是壹個delegate,在中文教材中壹般翻譯為“delegate”。其實就像C語言中指向函數的指針(這是壹個比喻,方便妳理解,但我建議妳不要這樣固化概念,因為有很多地方和指針完全不壹樣)。CALLBACK的定義只反映了壹件事:它可以代表壹個方法,這個方法接受兩個int參數,並返回壹個聲明時指出的bool。換句話說,CALLBACK代表了壹個明確的方法簽名,即任何以兩個int為形參並返回bool的方法都可以被“代表”(即委托給它)。但至於這樣的方法是誰的,這兩個參數怎麽用,返回給bool什麽,那是委托方法要實現的(就像妳的報表方法做的壹樣)。

CALLBACK myCallBack =新回調(報告);

是使用委托的關鍵,也就是說:myCallBack是報表的委托(註意不是執行報表,而是調用myCallBack的人。Invoke()方法實際執行報告。可以想象,既然EnumWindows已經接受了我的CallBack,那麽肯定會被它調用)。發送到EnumWindows,EnumWindows不知道它執行的是哪個具體方法。它只需要知道myCallBack需要兩個int作為參數,它也會提供這兩個參數,然後等待myCallBack代表的方法被執行,然後給它壹個bool,然後EnumWindows就會拿這個bool去做其他的事情,就不會有myCallBack了。我不知道這樣說妳能不能更清楚地理解。