亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將方法存儲到變量中并在 C# 中以三元形式使用它們

將方法存儲到變量中并在 C# 中以三元形式使用它們

C#
海綿寶寶撒 2022-01-09 10:43:51
我有一段簡單的代碼,我正在努力使它對我的三元組更簡單。我有一個很長的方法,想把它塞進一個變量中,這樣更容易閱讀,但不知道該怎么做。我的代碼目前看起來像這樣:_gridPositionLastFrame = _buildState == BuildState.None ? Grids.Snap(worldPosition,1,plane); : Grids.Snap(worldPosition,4,plane);我想縮短它更像://Set the functions in variables here first some how rather than compute them//var snapOne as Grids.Snap(worldPosition,1,plane);//var snapFour as Grids.Snap(worldPosition,4,plane);_gridPositionLastFrame = _buildState == BuildState.None ? SnapOne() : SnapFour();這可能嗎 ?這確實有助于使我的腳本在某些部分變得更干凈,但我不知道編寫它的正確方法。
查看完整描述

3 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

你很接近:


var snapOne as Grids.Snap(worldPosition, 1, plane);

var snapFour as Grids.Snap(worldPosition, 4, plane);

_gridPositionLastFrame = _buildState == BuildState.None ? snapOne : snapFour;

...但是Grids.Snap被調用了兩次,即使其中一個調用沒有被使用。在某些方法的情況下,這甚至可能會導致副作用。我建議提取出變化的部分:


var snapSize = _buildState == BuildState.None ? 1 : 4;

_gridPositionLastFrame = Grids.Snap(worldPosition, snapSize, plane);

這需要更少的邏輯重復。


查看完整回答
反對 回復 2022-01-09
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

我不知道你的GridSnap函數的簽名,但我會假設它看起來像:


TR GridSnap(T1, int, T2)

因此,您可以編寫如下代碼:


Func<TR> SnapOne = () => Grids.Snap(worldPosition, 1, plane);

Func<TR> SnapFour = () => Grids.Snap(worldPosition, 4, plane);

就在你的三元之上。


查看完整回答
反對 回復 2022-01-09
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

你也可以這樣做(對于 ref 和 out 類型的方法,這不起作用)

_gridPositionLastFrame = Grids.Snap(worldPosition,  _buildState == BuildState.None ? 1: 4 ,plane);


查看完整回答
反對 回復 2022-01-09
  • 3 回答
  • 0 關注
  • 236 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號