[英]C# switch comparison
我正在尝试学习编程 C#(自学),但我不知道是否可以像 if 条件一样使用 switch case。
我可以像这样与switch进行比较吗?
switch(var)
{
case var < 10:
//Do something
break;
}
或者这是为什么如果条件与开关相比不同的情况?
某些比较可以通过patterns在 switch case 中完成。 在您的特定场景中,关系模式可以检查开关输入是否< 10
。
switch(var)
{
case < 10:
//Do something
break;
}
模式的一个重要限制是它们内部的值必须是恒定的。 所以如果你有一个变量int x
并试图在case < x:
的情况下使用它,它就行不通了。
https://dotnetcoretutorials.com/2020/08/10/relational-pattern-matching-in-c-9/
决定使用 IF 语句还是 SWITCH 语句取决于许多因素,包括代码的可读性。 有时,多个 IF 语句提供比使用 switch 更简单的方法。 其他时候最好使用 switch 语句。
您的问题的简单答案是肯定的,但如果您想学习,最好在特定情况下尝试两者。
在大多数情况下,switch 是编写 if/else 语句链的另一种方法
switch(myVar)
{
case 1:
//Do something
break;
case 2:
//Do something
break;
case 3:
//Do something
break;
default:
//Do something else
}
相当于
if(myVar == 1) {
//Do something
}
else if(myVar == 2) {
//Do something
}
else if(myVar == 3) {
//Do something
}
else {
//Do something
}
在旧版本的 C#(7.0 之前)中,case 语句仅限于测试值是否等于常量。 然而,通过引入一种称为“模式匹配”的功能,您可以在 case 语句中进行更具表现力的匹配。 随后的 C# 版本在这方面添加了越来越多的语法,但最终除了 if/else 链可以实现的功能之外,它们没有做任何事情。 对于有很多条件的情况,switch/case 语句通常更容易阅读
允许更改语法的示例 C# 9.0
switch(myVar)
{
case == 1:
//Do something
break;
case > 1 and < 3:
//Do something
break;
case == 3:
//Do something
break;
default:
//Do something else
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.