English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C#-Switch-Anweisung

Wenn Sie eine Variable für drei oder mehr Bedingungen testen möchten, können Sie den switch-Befehl anstelle des if-else-Befehls verwenden. Hier erfahren Sie mehr über den switch-Befehl und wie man ihn effektiv in C#-Programmen verwendet.

Hier ist die allgemeine Syntax des switch-Befehls.

 Syntax:}}

switch(match Ausdruck/Variable)
{
    case Konstante-value:
        //auszuführende Anweisungen;
        break;
    default: 
        //auszuführende Anweisungen;
        break;
}

Eine switch-Anweisung beginnt mit dem Schlüsselwort switch, das eine Ausdrucksbedingung oder eine Variable in Klammern switch(匹配表达式 match expression) enthält. Das Ergebnis dieser Ausdrucksbedingung oder Variable wird gemäß den case-Bedingungen innerhalb der geschweiften Klammern {} getestet. case muss mit eindeutigen Konstantenwerten angegeben werden und endet mit einem Doppelpunkt:. Jeder Fall enthält einen oder mehrere auszuführende Anweisungen. Wenn der Konstantenwert und der Ausdrucksbedingung/Wert gleich, wird der case ausgeführt. Eine switch-Anweisung kann auch einen optionalen default-Tag enthalten. Wird kein case ausgeführt, wird der default-Tag ausgeführt. Die Schlüsselwörter break, return oder goto werden verwendet, um aus dem switch-Fall das Programmsteuerung zu verlassen.

Nachstehend wird ein einfaches Beispiel einer switch-Anweisung gezeigt.

int x = 10;
switch (x
{ 
    case 5:
        Console.WriteLine("x-Wert ist5");
        break;
    case 10:
        Console.WriteLine("x-Wert ist10");
        break;
    case 15:
        Console.WriteLine("x-Wert ist15");
        break;
    default:
        Console.WriteLine("Unbekannter Wert");
        break;
}
输出:
x-Wert ist10

Oben, die switch(x) Anweisung enthält eine Variable x, deren Wert mit jedem case Wert wert5,10und15drei Fälle. Es enthält auch den default-Tag, falls kein case-Wert mit switch Variable/Ausdruck passt, wird dieser Label ausgeführt. Jeder case beginnt nach : und enthält einen auszuführenden Befehl. Der Wert von X stimmt mit dem Wert des zweiten Falls überein10: passen, dann ist der Wert der Ausgabe der Wert von x10

Eine switch-Anweisung kann jede leere Ausdrucksbedingung enthalten, die einen Rückgabewert vom Typ char, string, bool, int oder enum hat.

Eine switch-Anweisung kann auch eine Ausdrucksbedingung enthalten, deren Ergebnis bei der Ausführung für jeden case getestet wird.

int x = 125;
switch (x % 2)
{ 
    case 0:
        Console.WriteLine($"{x} ist gerade");
        break;
    case 1:
        Console.WriteLine($"{x} ist ungerade");
        break;
}
输出:
125ist ungerade

Switch Case

Switch-Case müssen eindeutige Konstantenwerte sein. Es können bool, char, string, integer, enum oder die entsprechenden nullable Typen sein.

Beachten Sie

In C# 7Nach .0 können switch-cases nicht eindeutige Werte enthalten. In diesem Fall wird der erste passende case ausgeführt.

Betrachten Sie das folgende einfache Beispiel einer switch-Anweisung.

string statementType = "switch";
switch (statementType)
{
    case "if.else":
        Console.WriteLine("if...else statement");
        break;
    case "ternary":
        Console.WriteLine("Ternary operator");
        break;
    case "switch":
        Console.WriteLine("switch statement");
        break;
}
输出:
switch statement

可以组合多个 case 来执行相同的语句。

int x = 5;
switch (x
{ 
    case 1:
        Console.WriteLine("x = 1");
        break;
    case 2:
        Console.WriteLine("x = 2");
        break;
    case 4:
    case 5:
        Console.WriteLine("x = 4 or x = 5");
        break;
    default:
        Console.WriteLine("x > 5");
        break;
}

每个case必须通过使用break、return、goto语句或其他方式显式地退出case,确保程序控制退出一个case,并且不会进入默认的case。

以下使用 return 关键字。

static void Main(string[] args)
{
    int x = 125;
    Console.Write( isOdd(x)? "偶数值" : "奇数值");
}
static bool isOdd(int i, int j)
{
    switch (x % 2)
    { 
        case 0:
            return true;
        case 1:
            return false;
        default:
            return false;
    }
    
    return false;
}
输出:
奇数值

没有break、return或goto语句或具有相同常量值的switch case将产生编译时错误。

int x = 1;
switch (x
{ 
    case 0:
        Console.WriteLine($"{x} is even value");
        break;
    case 1:
        Console.WriteLine($"{x} is odd Value");
        break;
    case 1: // 错误-控件无法从一个case标签(“ case 1:)进入另一个 case 标签
        Console.WriteLine($"{x} is odd Value");
    defaut:
        Console.WriteLine($"{x} is odd Value");
        break;
}

嵌套 switch 语句

一个switch语句可以在另一个switch语句中使用。

int j = 5;
switch (j
{
    case 5:
        Console.WriteLine(5);
        switch (j - 1)
        {
            case 4:
            Console.WriteLine(4);
            switch (j - 2)
            {
                case 3:
                Console.WriteLine(3);
                break;
            }
            break;
        }
        break;
    case 10:
        Console.WriteLine(10);
        break;
    case 15:
        Console.WriteLine(15);
        break;
    default:
        Console.WriteLine(100);
        break;
}
输出:
5 
4 
3
 要记住的要点:
  1. Der switch-Ausdruck ist eine Alternative zum if-else-Statement.

  2. Der switch-Ausdruck testet die Übereinstimmung der Ausdrucksbedingung mit einer Gruppe von als case angegebenen Konstanten./Variable.

  3. Um aus dem case auszusteigen, müssen break, return oder goto-Schlüsselwörter im switch-case enthalten sein.

  4. Der switch kann einen optionalen default-Tag enthalten, der ausgeführt wird, wenn kein case ausgeführt wird.

  5. Der C#-Compiler gibt eine Fehlermeldung über fehlende : im case und den Wert der Konstante aus und beendet den case.

  6. Von C#7Ab Version .0 kann der switch-Bedingung nicht eindeutige Werte enthalten. In diesem Fall wird die erste passende Bedingung ausgeführt.