在 C# 中对多个表达式使用三元运算符

Using the ternary operator in C# for multiple expressions

通过使用三元运算符 ?:

perClick  = PlayerPrefs.HasKey("clickpoints") ? PlayerPrefs.GetFloat("clickpoints") : 2.0f;

我想将存储在 PlayerPref 中的浮点数分配给“perClick”变量,如果条件计算结果为 True,或者如果条件计算结果为 False,我想将“perClick”设置为 2。但是,如果不对,我也想做PlayerPrefs.SetFloat("clickpoints, 2.0f)。最后一个选项可以加多个语句吗?

您不能使用三元运算符来实现此目的,但您可以将所需的效果压缩到一个条件语句中:

if (PlayerPrefs.HasKey("clickpoints"))
  perClick = PlayerPrefs.GetFloat("clickpoints");
else
  PlayerPrefs.SetFloat("clickpoints", perClick = 2.0f);

然而,我怎么强调这样做有多糟糕,因为逻辑是模糊的(即使是训练有素的眼睛也很容易错过重要的细节)。您的代码应该尽可能自我记录,特别是当不能通过减少代码行数获得额外的效率时(或者更喜欢 ?:,它是 if-else 大多数时候的语法糖 - 参见 Is the conditional operator slow?).

更好地表达你的意思...

....
else
{
  perClick = 2.0f;
  PlayerPrefs.SetFloat("clickpoints", perClick);
}