如果声明在false时继续(多个||和&&)

时间:2017-02-17 01:57:56

标签: c# operators conditional-statements

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

i = 0且allCorrect [0] = true。该声明说"如果allCorrect [0]!= 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]))

1 个答案:

答案 0 :(得分:0)

解决方案:

我将所有条件语句放在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;
                }
            }