【问题标题】:If statement continuing when false (multiple || and &&)if 语句在 false 时继续(多个 || 和 &&)
【发布时间】:2017-07-06 09:33:15
【问题描述】:

我不知道为什么会这样,但问题出在screenshot.

i = 0 和 allCorrect[0] = true。声明说“if allCorrect[0] != true”或“if true != true”,那么为什么它仍在大括号内运行代码,我只是错过了一些非常简单的东西吗?

额外信息:

此屏幕截图取自一个文件,该文件被编译成 dll 并在另一个项目中使用。但这应该不会影响任何事情。

我尝试将它放在括号中并使用 !也是这样的

if ((parameters[i] == "0" && !allCorrect[i]) || 
                (parameters[i] == "1" && !allCorrect[i]) || 
                (parameters[i].ToLower() == "false" && !allCorrect[i]) || 
                (parameters[i].ToLower() == "true" && !allCorrect[i]))

【问题讨论】:

  • 代码需要在问题中,而不是图片
  • 你的意思是为什么它仍然在你的 if 语句中进行?我说的对吗?
  • @WillyDavidJr 是的
  • 因为您使用的是 OR 条件。如果只有“一个”条件为真,那么它将在您的 if 语句中继续。
  • || 嵌套 && 根据我的审查和测试,您的陈述不可能是真的......除非i = 1allCorrect[] 与图像不同..

标签: c# operators conditional-statements


【解决方案1】:

解决方案:

我将所有条件语句都放在 if (!allCorrect[i]) 中,所以它看起来像这样

if (!allCorrect[i])
            {
                if (int.TryParse(parameters[i], out INT))
                {
                    if (_command.ParameterTypes[i] == EVariableType.INT)
                    {
                        allCorrect[i] = true;
                    }
                    else
                    {
                        allCorrect[i] = false;
                    }
                }
            }
            if (!allCorrect[i])
            {
                if (float.TryParse(parameters[i], out FLOAT))
                {
                    if (_command.ParameterTypes[i] == EVariableType.FLOAT)
                    {
                        allCorrect[i] = true;
                    }
                    else
                    {
                        allCorrect[i] = false;
                    }
                }
            }
            if (!allCorrect[i])
            {
                if (parameters[i] == "0" ||
                parameters[i] == "1" ||
                parameters[i].ToLower() == "false" ||
                parameters[i].ToLower() == "true")
                {
                    if (_command.ParameterTypes[i] == EVariableType.BOOL)
                    {
                        allCorrect[i] = true;
                    }
                    else
                    {
                        allCorrect[i] = false;
                    }
                }
            }
            if (!allCorrect[i])
            {
                if (_command.ParameterTypes[i] == EVariableType.STRING)
                {
                    allCorrect[i] = true;
                }
                else
                {
                    allCorrect[i] = false;
                }
            }

【讨论】:

    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    相关资源
    最近更新 更多