3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
在 C# 中不可能。
你的代碼有什么問題嗎?它很好而且很簡(jiǎn)單。
javascript 版本丑陋且存在問題,因?yàn)槭褂糜簿幋a的字符串來調(diào)用方法是潛在的錯(cuò)誤來源,并且無(wú)法維護(hù)。
但你可以這樣寫:
switch ( left.IsColliding() )
{
case true:
directions.Remove(Direction.Left);
break;
case false:
directions.Add(Direction.Left);
break;
}

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
看一下Func<T, TResult>
它讓您可以定義一個(gè)函數(shù),然后稍后調(diào)用它。
因此,您可以將字符串中的“Remove”和“Add”函數(shù)作為Dictionary<string, Func<T, TResult>
.
您可以使用與 JavaScript 相同的語(yǔ)法來使用三元。所以你只需使用它而不是 if 語(yǔ)句。

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
三元運(yùn)算符必須返回一些東西。您可以執(zhí)行類似的操作來返回Action具有您正在尋找的效果的委托:
int a = 5;
int b = 10;
(a == b ? (Action)doThis : doThat)();
其中doThis和doThat是方法。
- 3 回答
- 0 關(guān)注
- 228 瀏覽
添加回答
舉報(bào)