C# switch-Anweisung

Bedingte Anweisungen in C#

aswitchDie Anweisung ermöglicht es, eine Variable gegen mehrere Werte zu testen. Jeder Wert wird als case bezeichnet, und die getestete Variable wird gegen jedenswitch casegeprüft. Führen Sie eine Prüfung durch.

Syntax

In C#switchDie Syntax der Anweisung:

switch(expression){
    case constant-expression  :
       statement(s);
       break; 
    case constant-expression  :
       statement(s);
       break; 
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
       break; 
}

switchAnweisungen müssen die folgenden Regeln befolgen:

  • switchin der Anweisungexpressionmuss ein integraler oder Aufzählungstyp sein, oder ein Klassentyp, der eine einzelne Konvertierungsfunktion besitzt, um ihn in einen integralen oder Aufzählungstyp umzuwandeln.
  • In einem switch kann es beliebig viele case-Anweisungen geben. Auf jedes case folgt ein Vergleichswert und ein Doppelpunkt.
  • DerKonstantenausdruckdes case muss denselben Datentyp wie die Variable im switch haben und muss eine Konstante sein.
  • Wenn die getestete Variable gleich der Konstante in einem case ist, werden die auf den case folgenden Anweisungen ausgeführt, bis einebreak-Anweisung erreicht wird.
  • Wenn einebreak-Anweisung angetroffen wird, wird der switch beendet, und der Kontrollfluss springt zur nächsten Zeile nach der switch-Anweisung.
  • Nicht jede case-Anweisung muss einbreakenthalten. Wenn eine case-Anweisung leer ist, muss sie keinbreakenthalten, der Kontrollfluss wirdfortgesetztmit nachfolgenden cases, bis ein break angetroffen wird.
  • C# erlaubt es nicht, dass die Ausführung von einem case-Abschnitt zum nächsten case-Abschnitt fortgesetzt wird. Wenn eine case-Anweisung ausgeführt wurde, muss sie einbreakoder andere Sprunganweisungen enthalten.
  • aswitch-Anweisungen können eine optionaledefault-Anweisung am Ende des switch haben. Die default-Anweisung wird verwendet, um eine Aufgabe auszuführen, wenn keiner der obigen Fälle zutrifft. Die default-Anweisung muss außerdem einebreak-Anweisung enthalten, was eine gute Angewohnheit ist.
  • C# unterstützt kein explizites Durchfallen von einem case-Label zum anderen. Um C# explizites Durchfallen von einem case-Label zum anderen zu ermöglichen, können Sie goto case oder goto default verwenden.

Flussdiagramm

C# 中的 switch 语句

Beispiel

Das folgende Beispiel wird verwendet, um den aktuellen Wochentag zu bestimmen:

Beispiel

using System;

namespace MyApplication
{
  class Program
  {
    static void Main(string[] args)
    {
      int day = 4;
      switch (day)
      {
        case 1:
          Console.WriteLine("Monday");
          break;
        case 2:
          Console.WriteLine("Tuesday");
          break;
        case 3:
          Console.WriteLine("Mittwoch");
          break;
        case 4:
          Console.WriteLine("Donnerstag");
          break;
        case 5:
          Console.WriteLine("Freitag");
          break;
        case 6:
          Console.WriteLine("Samstag");
          break;
        case 7:
          Console.WriteLine("Sonntag");
          break;
      }    
    }
  }
}

Das Ausführungsergebnis variiert je nach Datum. Das Ergebnis, das ich bei der Ausführung an diesem Tag erhalten habe, ist:

Thursday

Das folgende Beispiel bestimmt die Schülernote, das einedefaultAnweisung enthält:

Beispiel

using System;

namespace DecisionMaking
{
   
    class Program
    {
        static void Main(string[] args)
        {
            /* lokale Variablendefinition */
            char grade = 'B';

            switch (grade)
            {
                case 'A':
                    Console.WriteLine("Großartig!");
                    break;
                case 'B':
                case 'C':
                    Console.WriteLine("Gute Arbeit");
                    break;
                case 'D':
                    Console.WriteLine("Du hast bestanden");
                    break;
                case 'F':
                    Console.WriteLine("Versuchen Sie es noch einmal");
                    break;
                default:
                    Console.WriteLine("Ungültige Note");
                    break;
            }
            Console.WriteLine("Ihre Punktzahl ist {0}", grade);
            Console.ReadLine();
        }
    }
}

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

做得好
您的成绩是 B

Bedingte Anweisungen in C#

Weitere Erweiterungen