优雅的方法来根据布尔值否定数值

xr2*_*0xr 4 c#

我有一个十进制变量,如果布尔变量为真,我想否定.任何人都可以想到比这更优雅的方式:

decimal amount = 500m;
bool negate = true;

amount *= (negate ? -1 : 1);
Run Code Online (Sandbox Code Playgroud)

我正在考虑按位运算符或严格的数学实现.

Ree*_*sey 13

就个人而言,我只会使用if语句,因为我认为它在意图方面是最明确的:

decimal amount = 500m;
bool negate = true;

// ...

if (negate)
    amount *= -1;
Run Code Online (Sandbox Code Playgroud)

这真的不是任何额外的打字(它实际上更短!),在我看来更清晰.

  • @Tigran:简单明了==优雅.此外,这也很有效率...... (5认同)
  • @Tigran:"优雅"和"酷"不是同义词.事实上,很多时候"酷"的解决方案(意味着它有趣或意外)往往是最不优雅的,因为它经常是钝的. (4认同)
  • 但不是那么优雅:) (3认同)
  • @Tigran,我不同意.里德的解决方案很明显.我觉得提问者正在寻找更加模糊的东西.朦胧不是优雅. (3认同)