C# Visual Studio 2013

C# Visual Studio 2013,c#,modulus,C#,Modulus,我只是想知道,如果x+y+z%2==0,我如何声明,但只有当这三个值没有设置为0时,才执行此语句。我要求值为0 我的代码示例&posStatus可能包含值为0的变量。问题是,当这三个值都为0时,就会出现问题。随着时间的推移,用户和程序将填写这些值 else if (posStatus[0] + posStatus[4] + posStatus[8] % 2 == 0) { if (posStatus[0] == 0) { posStatus[0] = 2;

我只是想知道,如果x+y+z%2==0,我如何声明,但只有当这三个值没有设置为0时,才执行此语句。我要求值为0

我的代码示例&posStatus可能包含值为0的变量。问题是,当这三个值都为0时,就会出现问题。随着时间的推移,用户和程序将填写这些值

else if (posStatus[0] + posStatus[4] + posStatus[8] % 2 == 0)
{
    if (posStatus[0] == 0)
    {
        posStatus[0] = 2;
        return;
    }
    else if (posStatus[4] == 0)
    {
        posStatus[4] = 2;
        return;
    }
    else if (posStatus[8] == 0)
    {
        posStatus[8] = 2;
        return;
    } 
}

C#中的逻辑运算符在编译过程中转换为一系列if-else结构,因此如果第一个条件不为true,则不会检查其他条件。

快速下注。。。你误用了。尝试添加括号。这似乎不是问题。。问题在于,如果本例中的数组0、4和8不总是进行初始化。如果其中一个是,那没什么大不了的,但是如果没有一个发生,那么这个问题就发生了。如果3个都不是=到0,我希望它不要执行此代码。对不起,我不明白你在说什么。你所说的“本例中的数组0、4和8并不总是被初始化”是什么意思?答案已经给出,但我会解释它,不管其他人是否有类似的问题。我的问题是,我的变量默认设置为0,需要保留为0,但如果三个变量都为0,那么三个值加起来就是%2=0,这导致了我的问题。这很好,因为它首先使用短路来评估便宜的选项。
if((posStatus[0]!=0 && posStatus[4]!=0 && posStatus[8]!=0) && 
   (posStatus[0] + posStatus[4] + posStatus[8]) % 2 == 0)
{

}
if((x!=0 && y!=0 && z!=0) && x + y + z % 2 == 0)
    //do your stuff
if((posStatus[0]!=0 && posStatus[4]!=0 && posStatus[8]!=0) && 
   (posStatus[0] + posStatus[4] + posStatus[8]) % 2 == 0)
{

}