[問題] 關於Delegate與Lambda的結合應用Bug

作者: yan04870449 (楊伯)   2014-10-08 20:03:07
小弟附上一份我實現Bug的Code,我認為這應該不是Bug
而是我哪邊認知有錯。
雖然我是在Unity裡面執行的,但是我想在VS裡面應該也是一樣結果
以下是程式碼連結
https://gist.github.com/anonymous/4f06c028f7688c8047b1
以下是執行結果(Unity平台)
A:-1254341580
B:-1254341612
C:-1254341516
myAction 1:-1254341580
myAction 2:-1254341612
SET :-1254341612
myAction 3:-1254341612
myAction 4:-1254341612
iAction:-1254341612
A
B
myAction 5:-1254341612
myAction
作者: a926 (Aaron)   2014-10-08 23:27:00
因為你在28行Set(myAction)的時候裡面只有combine _A跟_B並沒有_C然後invodker沒有串聯,純粹是執行你Action的結果
作者: yan04870449 (楊伯)   2014-10-09 09:37:00
我原本的預期是,delegate是call be ref,所以我把他送進去lambda的method裡面之後,我如果再對deleaget增加method的話,我覺得應該要加的上去的,但是似乎變成是call by value了!?
作者: a926 (Aaron)   2014-10-09 12:13:00
這部分可能還是要請高手來解釋. 就我看完資料的感覺delegate call be ref 是指他在呼叫函數的時候是by ref也就是delegate 存放的是函數的point 而不是存函數 valuehttp://0rz.tw/ZbE8A 這位大大第一句話就有點類似我的想法也許你可以留言再詢問他一下你可以看這篇 http://0rz.tw/PGx7a因為VB的寫法跟C#有點不一樣,可是看VB的Keyword就比較了解也謝謝你讓我複習了一下委派 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com