Gibt es eine Möglichkeit, durch mehrere Case-Anweisungen zu fallen, ohne case value:
wiederholt?
Ich weiß, dass das funktioniert:
switch (value)
{
case 1:
case 2:
case 3:
// Do some stuff
break;
case 4:
case 5:
case 6:
// Do some different stuff
break;
default:
// Default stuff
break;
}
aber ich würde gerne etwas in dieser Art machen:
switch (value)
{
case 1,2,3:
// Do something
break;
case 4,5,6:
// Do something
break;
default:
// Do the Default
break;
}
Ist diese Syntax, an die ich denke, aus einer anderen Sprache, oder übersehe ich etwas?
1 Stimmen
Gibt es einen Grund, warum Sie nicht einfach eine IF-Anweisung verwenden (wenn Sie einen Bereich von Ints überprüfen)?
2 Stimmen
Ja charlse, die erste Methode funktioniert gut, ich habe sie an vielen Stellen verwendet. Es ist schmutziger als mir lieb ist, aber es ist nützlich. Ich habe diese ganzen Zahlen nur als Beispiel verwendet. Die echten Daten waren vielfältiger. Ein if (1 || 2 || 3 ) {...} else if (4 || 5 || 6) {...} hätte auch funktioniert, aber es ist schwieriger zu lesen.
6 Stimmen
Warum halten Sie letztere für schmutziger als erstere? Letzteres verleiht dem Begriff "Schmutz" eine weitere Bedeutung
,
und eine, die mit keiner anderen Sprache im C-Stil geteilt wird. Das scheint mir viel schmutziger zu sein.1 Stimmen
Vielleicht haben Sie die Syntax des 2nd von Ruby übernommen. So funktioniert es in dieser Sprache (obwohl switch zu case und case zu when wird, neben anderen Dingen).
0 Stimmen
VB hat in diesem Bereich viel mehr Macht mit seiner
select case
Erklärung.0 Stimmen
Sie denken dabei wahrscheinlich an Delphi/Pascal, das die
case i when 1...3: begin end; 4, 5, 7: begin end; 6, 8..10: begin end; else // handle default end;
Typ-Syntax.5 Stimmen
Wichtiger Hinweis . Ranges werden in switch case ab C# v7 unterstützt - siehe Steve G.'s 回答
0 Stimmen
Das obere Beispiel hier ist eigentlich viel kürzer und leichter zu lesen als all die "so würde man es heute in einem schicken bereichsbasierten oder aufzählbaren Bereich machen" Antworten, die nicht auf meinen superbreiten Bildschirm passen. Ich meine. Man sieht es sich an und es ist klar, was es tut.