我正在努力找出!=的正确语法开关语句的运算符。理想情况下,它看起来像这样:
public enum Foo { A, B, C };
public Foo foo;
void Bar()
{
switch (foo)
{
case !Foo.A:
DoStuff();
break;
}
}
因此,在这种情况下;DoStuff((";如果foo!=A.
从C#9开始,您可以使用not
,这是一种关系模式:
switch (foo)
{
case not Foo.A:
DoStuff();
break;
}
在旧版本中,您需要使用空的Foo.A
大小写来排除它,并且在default
大小写中使用DoStuff
:
switch (foo)
{
case Foo.A:
break;
default:
DoStuff();
break;
}
最简单的方法是@JoachimIsaksson在他们的评论中提到的:
switch (foo)
{
case Foo.A:
// Do nothing
break;
default:
DoStuff();
break;
}
如果您使用的是C#9或更高版本,则可以使用not
:
switch (foo)
{
case not Foo.A:
DoStuff();
break;
}
清扫工和Bill Tür说了什么,还有:
如果
if(foo != Foo.A) DoStuff();
箱子防护装置
(参见选择声明中的案例保护(C#参考((
foreach(var f in Enum.GetValues<Foo>())
switch (f)
{
case var x when x != Foo.A:
Console.WriteLine($"{f}: Not A");
break;
default:
Console.WriteLine($"{f}: A");
break;
}
//A: A
//B: Not A
//C: Not A