我是C#的新手,並使用它來編寫我的下一個遊戲。來自C++,Java和JavaScript的背景,我很高興使用C#的匿名函數來簡化在C++和Java中不那麼簡單的任務。在C#中實現類似jQuery的animate()函數#
特別是,我想在我的代碼中實現一個類似於jQuery的animate()函數的系統:將一組變量從其初始值緩動到一組新值,然後在完成時執行回調。我明白如何在C#中使用匿名函數和回調函數,所以這沒有問題,但我不確定如何將屬性及其相關值傳遞給函數。作爲一個例子,我的目標是這樣的,以便將玩家的x座標從初始值減小到目標值500,同時在10.0秒的過程中將他的縮放值減小到2.0f:
game.animate({ player.x: 500, player.scale: 2.0f }, 10.0f, delegate() { Console.WriteLine("Callback has been called!"); }
(這不會編譯,當然,但本例的點來描述我希望能近似的語法。)
根據其他堆棧溢出的問題和答案,這不是可能將屬性引用傳遞給C#中的函數,因此將player.x和player.scale傳遞給函數在這個w中顯然是不可能的唉,這意味着我不得不重新思考我的實施策略。
是否有任何其他方式可以實現這樣的系統,因爲C#對傳遞屬性引用的約束有限制?或者我是否需要放棄這個想法,並採用較不靈活的方法來緩解財產價值?
'不可能將屬性引用傳遞給C#中的函數'。它在方法聲明中使用'out'或'ref'。否則,你可以傳遞一個像「Player」這樣的引用類型。 – Shoe
@Shoe謝謝,我會給你一個鏡頭。這可能是我誤解了其他關於SO的問題,或者自這些帖子發佈以來事情發生了變化。 – Josh1billion
@Shoe它沒有工作;在對該函數的調用中,我收到一個編譯錯誤,說我無法將屬性作爲參數傳遞。 我的函數簽名看起來是這樣的: 公共無效動畫(REF float屬性,浮targetValue,行動回調= NULL) 和呼叫看起來是這樣的: game.Animate(REF this.x,900.0f,空值); – Josh1billion