我正在尝试学习不等式运算符(!=)的工作原理。我可以理解操作员的基本知识。如果操作数不相等则返回“true”,否则返回“false”。
但我似乎无法围绕编程课中给出的这个特定示例:
为什么条件返回“false”并且控制台调试“Hello Player 1”???不是条件“true”因此条件运算符必须返回第一个表达式而不是第二个表达式吗?
public string playerName;
void OnDisable() {
playerName = (playerName != "") ? playerName : "Player 1";
Debug.Log("Hello " + playerName);
答案 0 :(得分:11)
如果playerName
为null
,则与空字符串不同,""
如果你想检查空虚,我建议如下:
playerName = !String.IsNullOrEmpty(playerName) ? playerName : "Player 1";
答案 1 :(得分:4)
我认为你错了2号
""
表示一个空字符串,即包含0个字符的字符串。
由于您未输入任何文字,playerName
等于""
,因此playerName != ""
会返回false
,这就是您看到Hello Payer 1
的原因。
答案 2 :(得分:1)
您的字符串可能是null
。
我会用
playerName = !string.IsNullOrWhiteSpace(playerName) ? playerName: "Player 1";
答案 3 :(得分:1)
让我们分解一下:
此表达式检查playerName
是否不等于空字符串。如果它不是空字符串,则返回playerName
的值。如果 为空字符串,则返回"Player 1"
。
(playerName != "") ? playerName : "Player 1";
所以:“如果我们有一个有效的玩家名称,请使用它;否则,称他为”玩家1“。
然后我们将该表达式的结果分配回playerName
:
playerName = (playerName != "") ? playerName : "Player 1";
如果我们没有值,效果是使用默认playerName
。
我不喜欢使用条件表达式。在我看来,这是一个奇怪的,不清楚的习语。此外,正如其他人所说,playerName
默认为null
,不等于空字符串。这意味着如果您没有得到任何输入,您将获得null
而不是"Player 1"
。
这是相同的逻辑,更具可读性,并且还检查null
:
if (String.IsNullOrEmpty(playerName)) {
playerName = "Player 1";
}
学习条件运算符很好,在课堂上,你可以学习。但是如果你回到你的教授那里说“这是相同的逻辑,但它更清楚”,他最好不要把任何一点给你。
那就是说,你最好知道为什么这是相同的逻辑,而不仅仅是从互联网上取一些随机卡通机器人的话。