C#在里面使用!=运算符?:

时间:2017-03-07 21:20:36

标签: c# conditional operator-keyword inequality

我正在尝试学习不等式运算符(!=)的工作原理。我可以理解操作员的基本知识。如果操作数不相等则返回“true”,否则返回“false”。

但我似乎无法围绕编程课中给出的这个特定示例:

  1. 我为Unity编辑器设置了公共字符串,但我没有输入任何文本。
  2. 两个引号(“”)表示文本输入公共字符串。
  3. 但在这种情况下,条件必须是真的吗?因为我没有输入任何文字
  4. 为什么条件返回“false”并且控制台调试“Hello Player 1”???不是条件“true”因此条件运算符必须返回第一个表达式而不是第二个表达式吗?

    public string playerName;
    
    void OnDisable() {
        playerName = (playerName != "") ? playerName : "Player 1";
        Debug.Log("Hello " + playerName);
    

4 个答案:

答案 0 :(得分:11)

如果playerNamenull,则与空字符串不同,""

如果你想检查空虚,我建议如下:

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";
}

学习条件运算符很好,在课堂上,你可以学习。但是如果你回到你的教授那里说“这是相同的逻辑,但它更清楚”,他最好不要把任何一点给你。

那就是说,你最好知道为什么这是相同的逻辑,而不仅仅是从互联网上取一些随机卡通机器人的话。