Heim > Backend-Entwicklung > C++ > Wie kann ich Fallthrough-Verhalten in den Switch-Anweisungen von C# erreichen?

Wie kann ich Fallthrough-Verhalten in den Switch-Anweisungen von C# erreichen?

Patricia Arquette
Freigeben: 2025-01-04 22:13:46
Original
970 Leute haben es durchsucht

How Can I Achieve Fallthrough Behavior in C#'s Switch Statements?

Fallthrough von Switch-Anweisungen in C# verstehen

In C# ermöglichen Switch-Anweisungen die Steuerung des Programmflusses basierend auf dem Wert einer bestimmten Variablen. Herkömmlichen if/else-Konstrukten fehlt jedoch die Fähigkeit, verschiedene Fälle zu „durchfallen“, wie dies bei switch-Anweisungen der Fall ist.

Betrachten Sie das folgende Beispiel, in dem versucht wird, eine Zahl in ihre Wortdarstellung umzuwandeln:

static string NumberToWords(int number)
{
    string[] numbers = new string[] 
        { "", "one", "two", "three", "four", "five", 
          "six", "seven", "eight", "nine" };
    string[] tens = new string[] 
        { "", "", "twenty", "thirty", "forty", "fifty", 
          "sixty", "seventy", "eighty", "ninety" };
    string[] teens = new string[]
        { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
          "sixteen", "seventeen", "eighteen", "nineteen" };

    string ans = "";
    switch (number.ToString().Length)
    {
        case 3:
            ans += string.Format("{0} hundred and ", numbers[number / 100]);
        case 2:
            int t = (number / 10) % 10;
            if (t == 1)
            {
                ans += teens[number % 10];
                break;
            }
            else if (t > 1)
                ans += string.Format("{0}-", tens[t]);
        case 1:
            int o = number % 10;
            ans += numbers[o];

            break;
        default:
            throw new ArgumentException("number");
    }
    return ans;
}
Nach dem Login kopieren

Wenn dieser Code kompiliert wird, schlägt er mit Fehlern fehl, die darauf hinweisen, dass die Kontrolle nicht von einem Fall auf einen anderen übertragen werden kann. Dieses Problem ergibt sich aus der Tatsache, dass in C# eine Switch-Anweisung nach jedem Fall explizite Unterbrechungen erfordert, um sicherzustellen, dass der Ausführungsfluss kontrolliert wird.

Fallthrough erreichen

Zu Um einen Fallthrough in einer Switch-Anweisung zu erreichen, gibt es drei Optionen:

  1. Leere Fälle: Ein Fall kann leer gelassen werden, was effektiv einen Übergang zum nächsten Fall ermöglicht, ohne dass Code ausgeführt werden muss.
  2. Gehe zu Fall: Die Syntax „Gehe zu Fall“ kann verwendet werden, um die Steuerung explizit auf einen bestimmten Fall zu übertragen.
  3. Goto default: Die Goto-Default-Syntax überträgt die Steuerung auf den Standardfall, auch wenn der aktuelle Fall nicht gleich ist Standard.

Beispiel mit Fallthrough

Die folgende modifizierte Version der NumberToWords-Funktion verwendet die Goto-Case-Syntax, um Fallthrough zu erreichen:

static string NumberToWords(int number)
{
    string[] numbers = new string[] 
        { "", "one", "two", "three", "four", "five", 
          "six", "seven", "eight", "nine" };
    string[] tens = new string[] 
        { "", "", "twenty", "thirty", "forty", "fifty", 
          "sixty", "seventy", "eighty", "ninety" };
    string[] teens = new string[]
        { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
          "sixteen", "seventeen", "eighteen", "nineteen" };

    string ans = "";
    switch (number.ToString().Length)
    {
        case 3:
            ans += string.Format("{0} hundred and ", numbers[number / 100]);
            goto case 2;
        case 2:
            int t = (number / 10) % 10;
            if (t == 1)
            {
                ans += teens[number % 10];
                break;
            }
            else if (t > 1)
                ans += string.Format("{0}-", tens[t]);
            goto case 1;
        case 1:
            int o = number % 10;
            ans += numbers[o];

            break;
        default:
            throw new ArgumentException("number");
    }
    return ans;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Fallthrough-Verhalten in den Switch-Anweisungen von C# erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage