Switch Case: Kann ich statt einer Nummer auch einen Bereich verwenden?
Möchte ich wechseln, aber ich habe viele Fälle, gibt es eine Verknüpfung? Bisher ist die einzige Lösung, die ich kenne und ausprobiert:
switch (number)
{
case 1: something; break;
case 2: other thing; break;
...
case 9: .........; break;
}
Was ich hoffe, dass ich in der Lage bin zu tun, ist so etwas wie:
switch (number)
{
case (1 to 4): do the same for all of them; break;
case (5 to 9): again, same thing for these numbers; break;
}
Vielen Dank im Voraus für die Hilfe!
InformationsquelleAutor der Frage user3022162 | 2013-11-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein bisschen spät, um das Spiel für diese Frage, aber in den letzten änderungen eingeführt in C# 7 (standardmäßig Verfügbar in Visual Studio 2017/.NET Framework 4.6.2), range-based-switching ist jetzt möglich mit der
switch
- Anweisung.Beispiel:
Hinweise:
(
und)
sind nicht erforderlich, diewhen
Zustand, aber verwendet werden, in diesem Beispiel markieren Sie den Vergleich(s).var
kann auch verwendet werden, anstelle vonint
. Zum Beispiel:case var n when n >= 100:
.InformationsquelleAutor der Antwort Steve G.
Hier ist eine bessere und elegante Lösung für Ihre Problemstellung.
Jetzt anrufen, unsere bedingte wechseln
Alternativen für Schalter/ifElse
InformationsquelleAutor der Antwort Akxaya
If-else sollte verwendet werden, in diesem Fall, Aber wenn es immer noch nötig ist der Schalter aus irgendeinem Grund, die Sie tun können, wie unten, erste Fälle ohne Pause wird sich ausbreiten bis zur ersten Pause aufgetreten ist. Wie die früheren Antworten vorgeschlagen haben, empfehle ich die if-else-switch.
InformationsquelleAutor der Antwort Gayathri
Intervall ist konstant:
Ansonsten:
InformationsquelleAutor der Antwort benba
Haben, könnten Sie
switch
Konstrukt "handle" reicht von der Verwendung in Verbindung mit einemList
Ihre Grenzen.Mit diesem Ansatz-Bereiche können über unterschiedliche Spannweiten.
InformationsquelleAutor der Antwort user3598756
Wie bereits erwähnt
if-else
besser wäre in diesem Fall, wo Sie verarbeitet werden, eine Auswahl:InformationsquelleAutor der Antwort henrikm
Wenn Sie C/C++, es gibt keine "Reihe" syntax. Sie können nur eine Liste alle Werte nach jedem "Fall" - segment.
Sprache Ada oder Pascal support-Bereich der syntax.
InformationsquelleAutor der Antwort SliceSort
Erste von allen, sollten Sie die Programmiersprache, die Sie beziehen.
Zweitens
switch
Aussagen sind richtig verwendet werden für geschlossene Gruppen von Optionen in Bezug auf die geschaltete variable, z.B. Aufzählungen oder vordefinierte strings. Für diesen Fall würde ich vorschlagen, die gute alteif-else
Struktur.InformationsquelleAutor der Antwort Andrei Nicusan
Wenn die Frage lautete, C (Sie nicht sagen), dann ist die Antwort Nein, aber: GCC und Clang (vielleicht andere) unterstützen Bereich syntaxaber es ist nicht gültigen ISO-C:
Werden Sie sicher, dass ein Leerzeichen vor und nach dem
...
sonst bekommen Sie einen syntax Fehler.InformationsquelleAutor der Antwort DarkDust
In .Nur Net mit Visual Basic können Sie Bereiche in switch-Anweisungen, aber in C# gibt es keine gültige syntax, die für dieses.
Bewältigung Ihrer spezifischen problem in C# würde ich es lösen, also:
Um dies zu verdeutlichen eine weitere, stellen Sie sich vor, Sie haben einen prozentualen Wert.
Über Ihr problem als eine Vorlage, die Sie sich wünschen könnte dies wie folgt Aussehen:
Jedoch, da C# nicht zulassen, dass syntax, hier ist eine Lösung, die C# nicht erlaubt:
Können dauert ein wenig gewöhnungsbedürftig, aber es ist in Ordnung, wenn Sie es bekommen.
Persönlich würde ich es begrüßen, switch-Anweisungen zu ermöglichen, reicht.
Die Zukunft von C# switch-Anweisungen
Hier sind einige Ideen, die ich hatte, wie switch-Anweisungen verbessert werden könnte:
Version Ein
Version B
InformationsquelleAutor der Antwort Knickerless-Noggins
Durch
switch
Fall ist es unmöglich.Sie können gehen mit verschachtelten if-Anweisungen.InformationsquelleAutor der Antwort Joke_Sense10
Können Sie die Verwendung von if-else-Anweisungen mit | | - Operatoren (oder-operator) wie:
InformationsquelleAutor der Antwort Lukas Warsitz