c# - switch-Anweisung mehr als begrenzt vb.net 'Fall'
Las ich einen interessanten Artikel hier und es machte einen interessanten Punkt über die 'case' - Anweisung in vb.net vs der 'switch' - Anweisung in C#, dem habe ich unten eingefügt:
Den folgenden Visual Basic Select Case-Anweisung können nicht dargestellt werden in C# mit einer einzigen switch-Anweisung:
Dim Condition As Integer = 55
Select Case Condition
Case 1, 3 To 5, 10, 12, 14, Is > 50
'value 55 executes code here
Case Else
'values <1, 2, 6-9, 11, 13, 15-49
End Select
Ich habe immer gefunden, die switch-Anweisung in C#, mit dropthrough und consequentrequirements für eine Pause in jedem Fall, ein bisschen unhandlich. Gibt es einen Grund, Sie haben sich nicht verbessert der switch-Befehl, um diese Situationen? Wenn würde dropthrough nützlich sein, eh? Wer weiß, der alle Erweiterungen des Konstrukts zu mehr Flexibilität erlauben?
Cheers
InformationsquelleAutor der Frage Glinkot | 2011-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
In C# können Sie nur verwenden Sie unterschiedliche Werte in Fällen. Dies macht es mehr begrenzt, aber auf der anderen Seite macht es schneller, weil es kann implementiert werden unter Verwendung eines hash-lookup.
Die syntax der switch-Anweisung wurde mehr eingeschränkt in C# als in C/C++. Können Sie immer noch die gleichen Dinge tun, aber ein durchfallen ist nicht implizit, Sie haben zu schreiben, eine bestimmte Sprung zum nächsten Fall. Der Grund für diese Einschränkung ist, dass es viel mehr gemeinsames zu tun und fallen durch versehentlich als absichtlich.
In C# müssten Sie eine if-Anweisung im default-Fall zu behandeln die Bereiche:
InformationsquelleAutor der Antwort Guffa
Ich erinnere mich an ein uni-Dozent mal erzählt uns die einzige nützliche Sache, die er jemals gefunden zu tun mit fallen durch war schreiben die Texte für die zwölf Tage von Weihnachten.
Etwas entlang diesen Linien
10 Jahre später, Neige ich dazu, Sie mit ihm einverstanden sind. Zu der Zeit waren wir tun, java, die fällt durch, musste gefälschte es für C#.
InformationsquelleAutor der Antwort Chris Sainty
Drop through ist erlaubt für den speziellen Fall der übereinstimmenden mehrere Fälle, aber die vergleichenden und Reichweite Fällen nicht erlaubt. Also:
InformationsquelleAutor der Antwort Andrew Cooper