C#&& ,||运营商

时间:2013-10-17 17:53:43

标签: c# winforms operators

我有一些来自MySQL的值。 我想知道......我怎么能做到以下几点:

if (Value.ToString() == "1" || Value.ToString() == "2" || Value.ToString() == "3" && SecondValue.ToString() == "5")

值可以是:1“或”2“或”3 ......和第二值“5”。是指(三个“价值”)中的一个&& SecondValue。 或者没有办法那样做?我应该这样做:

if (Value.ToString() == "1" && SecondValue.ToString() == "5"
{
}
if (Value.ToString() == "2" && SecondValue.ToString() == "5"
{
}
ect ....

感谢您的回答。

6 个答案:

答案 0 :(得分:8)

您的代码几乎是正确的,但您需要在“或”条件周围添加一个额外的括号来对它们进行分组。

if ((Value.ToString() == "1" || Value.ToString() == "2" || Value.ToString() == "3") 
 && SecondValue.ToString() == "5")

答案 1 :(得分:2)

我认为你想要的是:

 if (new List<string>() { "1", "2", "3" }.Contains(Value.ToString()) && SecondValue.ToString() == "5")

答案 2 :(得分:1)

您可以根据需要使用括号对布尔条件进行分组。如果您想要“其中一个案例属实,并且其中一个案例也属实”的案例,请对案例进行适当分组。在您的情况下,您最好使用集合来保存“值”的有效案例的值,例如:

var myValue = Value.ToString();
var myValidCases = new [] {"1", "2", "3"};
if(myValidCases.Any(validCase => validCase == myValue) && SecondValue.ToString() == "5")
{
  //do something
}

答案 3 :(得分:0)

if 
(
    (
        Value.ToString() == "1" || 
        Value.ToString() == "2" || 
        Value.ToString() == "3"
    ) && 
    SecondValue.ToString() == "5"
)

答案 4 :(得分:0)

这基本上就是这样:

(Value == 1 && SecondValue == 5) || (Value == 2 && SecondValue == 5) || (Value == 3 && SecondValue == 5)

现在&amp;&amp;运算符非常类似于乘法运算符,因为它是distributive。这意味着我们可以做到这一点:

(Value == 1 || Value == 2 || Value == 3) && SecondValue == 5

答案 5 :(得分:0)

试试这个,它很干净:

if (SecondValue.ToString() == "5")
{
   if (Value.ToString() == "1" || Value.ToString() == "2"  || Value.ToString() == "3")
   {
      //Do Stuff
   }
}

此致 Krekkon

相关问题