Ich frage mich, warum C# erfordert, dass ich break
in einer switch
-Anweisung verwenden, obwohl eine Durchgriffs-Semantik per Definition nicht zulässig ist. Daher könnte der Compiler die break
am Ende jedes case
-Blocks erzeugen und mir den Ärger ersparen.Warum brauche ich Pause?
Allerdings gibt es ein Szenario (die bereits auf dieser Seite diskutiert wurde), die ich mit, dass einfiel könnte der Grund für die explizite Verwendung von break
sein:
switch (foo) {
case 0:
case 1:
bar();
break;
default:
break;
}
Hier wird das Verfahren bar()
wird aufgerufen, wenn foo
entweder den Wert 0 oder 1 hat.
Diese Option würde im wahrsten Sinne des Wortes brechen, wenn der Compiler würde break
Anweisungen selbst generieren. Ist dies der Grund, warum die Pause obligatorisch ist oder gibt es noch andere gute Gründe?
Ich persönlich denke, das war eine schreckliche Designentscheidung des C# -Teams und einer der wenigen Orte, an denen sie versagten. –
@Chris: Ich empfehle Ihnen sehr, den Blog von Eric in der angenommenen Antwort zu lesen. Es behandelt mehrere Dinge, die ich vermute, sind Dinge, die Sie verärgert haben. –
Und wie hättest du es gemacht, Chris? –