繁体   English   中英

C#开关比较

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM