📜  C#中的Switch语句

📅  最后修改于: 2021-05-29 14:08:54             🧑  作者: Mango

在C#中,Switch语句是一个多路分支语句。它提供了一种有效的方式,可以根据表达式的值将执行转移到代码的不同部分。开关表达式是整数类型,例如int,char,byte或short,或者是枚举类型,或者是字符串类型。将检查表达式的不同情况,然后执行一次匹配。

句法:

switch (expression) {

case value1: // statement sequence
     break;

case value2: // statement sequence
     break;
.
.
.
case valueN: // statement sequence
     break;

default:    // default statement sequence
}

流程图:

C#中的switch语句

要记住的要点:

  • 在C#中,不允许重复的大小写值。
  • 开关中变量的数据类型和案例的值必须是相同的类型。
  • case的值必须是常量或字面量。不允许使用变量。
  • break in switch语句用于终止当前序列。
  • 默认语句是可选的,它可以在switch语句内的任何位置使用。
  • 不允许使用多个默认语句。

例子:

// C# program to illustrate
// switch case statement
using System;
  
public class GFG {
  
    // Main Method
    public static void Main(String[] args)
    {
        int nitem = 5;
        switch (nitem) {
  
        case 1:
            Console.WriteLine("case 1");
            break;
  
        case 5:
            Console.WriteLine("case 5");
            break;
  
        case 9:
            Console.WriteLine("case 9");
            break;
  
        default:
            Console.WriteLine("No match found");
            break;
        }
    }
}
输出:
case 5

为什么我们使用Switch语句而不是if-else语句?

我们使用switch语句而不是if-else语句,因为if-else语句仅适用于值的少量逻辑求值。如果对更多可能的条件使用if-else语句,则将花费更多时间来编写并且也变得难以阅读。

示例:使用if-else-if语句

// C# program to illustrate
// if-else statement
using System;
  
class GFG {
  
    // Main Method
    public static void Main(String[] args)
    {
        // taking two strings value
        string topic;
        string category;
  
        // taking topic name
        topic = "Inheritance";
  
                // using compare function of string class
        if ((String.Compare(topic, "Introduction to C#") == 0) || 
            (String.Compare(topic, "Variables") == 0) || 
            (String.Compare(topic, "Data Types") == 0))
        {
            category = "Basic";
        }
          
                // using compare function of string class
        else if ((String.Compare(topic, "Loops") == 0) || 
                 (String.Compare(topic, "If Statements") == 0) || 
                 (String.Compare(topic, "Jump Statements") == 0)) 
        {
            category = "Control Flow";
        }
              
                // using compare function of string class
        else if ((String.Compare(topic, "Class & Object") == 0) || 
                 (String.Compare(topic, "Inheritance") == 0) || 
                 (String.Compare(topic, "Constructors") == 0)) 
        {
            category = "OOPS Concept";
        }
          
        else 
        {
            category = "Not Mentioned";
        }
  
        System.Console.Write("Category is " + category);
    }
}
输出:
Category is OOPS Concept

说明:如以上程序所示,该代码并不过分,但看起来很复杂,花费了更多的时间来编写。因此,我们使用switch语句来节省时间并编写优化的代码。使用switch语句将提供更好的代码可读性。

示例:使用switch语句

// C# program to illustrate
// switch statement
using System;
  
class GFG {
  
    // Main Method
    public static void Main(String[] args)
    {
        // taking two strings value
        string topic;
        string category;
  
        // taking topic name
        topic = "Inheritance";
          
        // using switch Statement
        switch(topic)
        {
            case "Introduction to C#":
            case "Variables":
            case  "Data Types":
                   
                category = "Basic";
                break;
                  
             case "Loops":
             case"If Statements":
             case"Jump Statements":
                   
                category = "Control Flow";
                break;
                  
             case "Class & Object":
             case "Inheritance":
             case "Constructors":
                   
                category = "OOPS Concept";
                break;
                  
             // default case 
             default:
                category = "Not Mentioned";
                break;
                  
        }
          
        System.Console.Write("Category is " + category);
    }
}
输出:
Category is OOPS Concept

在Switch语句中使用goto

您也可以使用goto语句代替switch语句中的break。通常,我们使用break语句从switch语句退出。但是在某些情况下,需要执行默认语句,因此我们使用goto语句。它允许在switch语句中执行默认条件。 goto语句还用于跳转到C#程序中的标记位置。

例子:

// C# program to illustrate the
// use of goto in switch statement
using System;
  
public class GFG {
  
// Main Method
public static void Main(String[] args)
    {
        int greeting = 2;
  
        switch (greeting) {
        case 1:
            Console.WriteLine("Hello");
            goto default;
        case 2:
            Console.WriteLine("Bonjour");
            goto case 3;
        case 3:
            Console.WriteLine("Namaste");
            goto default;
        default:
            Console.WriteLine("Entered value is: " + greeting);
            break;
        }
    }
}
输出:
Bonjour
Namaste
Entered value is: 2

说明:在上面的程序中,goto语句在switch语句中使用。在此首先打印案例2,即打印Bonjour ,因为开关包含的值为greeting的值为2,然后由于goto语句的存在,控制权转移到案例3,因此它打印Namaste,最后将控制权转移到默认值条件和打印输入的值是:2。

注意:如果您的switch语句是循环的一部分,您也可以使用continue代替break语句中的break语句,那么continue语句将使执行立即返回到循环的开始。