在 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);
}
通过使用三元运算符 ?:
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);
}