在C#中,如果我想检查以确保某个值不等于X或Y,我会写这样的东西:
if(x != 1 && x != 2)
{
//dosomething
}
我想看看是否有办法用OR代替AND来编写它。像这样的东西(这不起作用,但它是我想做的):
if(x != (1 || 2))
{
//dosomething
}
显然这不起作用,因为它试图将1 || 2
作为自己的陈述进行评估。有没有办法正确地写出来?
答案 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)) { ... }