Können Switch-Anweisungen in C# fehlschlagen?
Switch-Anweisungen in C# führen normalerweise den mit dem übereinstimmenden Fall verknüpften Code aus und verlassen dann den Switch . Es gibt jedoch Fälle, in denen es wünschenswert sein kann, dass ein Fall in einen anderen übergeht, was als „Fallthrough“ bezeichnet wird.
Im bereitgestellten Beispiel versucht die NumberToWords-Methode, eine Zahl in die entsprechende Wortdarstellung umzuwandeln. Es verwendet drei Arrays zur Darstellung von Zahlen, Zehnern und Zehnern. Die Switch-Anweisung berücksichtigt, dass die Länge der eingegebenen Zahl mit dem entsprechenden Fall übereinstimmt:
Der C#-Compiler gibt jedoch Fehler aus, da die Switch-Anweisung nicht explizit angibt, wo nach jedem Fall ausgeführt werden soll. Standardmäßig erfordert C#, dass jeder Fall über eine break-Anweisung oder eine goto-Anweisung verfügt, um einen Fallthrough zu verhindern.
Um einen Fallthrough in C# zu erreichen, können Sie die folgenden Techniken verwenden:
Leere Fälle: Definieren Sie einen Fall ohne Code, damit der nächste Fall ausgeführt werden kann automatisch.
switch (/*...*/) { case 0: break; // fall through to case 1 case 1: // do something break; }
goto case: Verwenden Sie die goto-Anweisung, um zu einem bestimmten Fall innerhalb des Schalters zu springen.
switch (/*...*/) { case 0: goto case 1; case 1: // do something break; }
goto default: Verwenden Sie die goto default-Anweisung, um zur Standardeinstellung zu springen Fall.
switch (/*...*/) { case 0: goto default; default: // do something break; }
Im ursprünglichen NumberToWords-Beispiel kann goto verwendet werden, um das gewünschte Fallthrough-Verhalten zu erreichen:
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"); }
Während Fallthrough für ein prägnanteres sorgen kann Bei der Implementierung in bestimmten Szenarien ist es wichtig, vorsichtig damit umzugehen. Übermäßiger Fallthrough kann zu verwirrendem und schwer zu wartendem Code führen, daher sollte er mit Bedacht eingesetzt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Fallthrough-Verhalten in C#-Switch-Anweisungen erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!