或者" ||"语法澄清

时间:2015-01-26 18:43:09

标签: c#

在C#中,如果我想检查以确保某个值不等于X或Y,我会写这样的东西:

if(x != 1 && x != 2)
{
     //dosomething
}

我想看看是否有办法用OR代替AND来编写它。像这样的东西(这不起作用,但它是我想做的):

if(x != (1 || 2))
{
     //dosomething
}

显然这不起作用,因为它试图将1 || 2作为自己的陈述进行评估。有没有办法正确地写出来?

3 个答案:

答案 0 :(得分:3)

您始终可以将AND反转为OR:

if (!(x == 1 || x == 2))
{
   ...
}

如上所述,您必须反转所有条件才能执行此操作。 De Morgan's Laws中描述了这样做的过程(感谢@RichardEverett!)。

答案 1 :(得分:2)

你可以尝试这个:

if(!(x == 1 || x == 2))
但老实说,我没有看到这样做的原因。

这句话if(x != 1 && x != 2)比上面的内容更清晰,更易读,而且也是如此。

如果x为1或2,则此(x == 1 || x == 2)的计算结果为true。因此,如果取消此项,则得到您想要的结果。

答案 2 :(得分:0)

不,C#目前不支持这样的结构。 以下是尽可能接近它,但它很慢!

if (!new[] { 1, 2 }.Contains(x)) { ... }