!=c#中switch语句的运算符语法



我正在努力找出!=的正确语法开关语句的运算符。理想情况下,它看起来像这样:

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

最新更新