switch case??
-
Huhu,
im unterschied zu C/C++ kann ich in C# wohl nich mhere case(s) bzw. "break" lose cases verwenden oder?
sowas bswp:
switch(..){ case 1: //do 1 case 2: //do 2 break; case 3: //do 3 break; }
-
Eine case-Anweisung darf nur auf das break verzichten, wenn sie keinen Code enthält.
Siehe: http://msdn.microsoft.com/de-de/library/06tc147t(VS.80).aspx
switch(x) { case 1: case 2: //do break; case 3: //do break; }
Geht also zumindest.
In meinen Augen eine schwache Leistung...
Wenn du einen konreten Fall hast, in dem das nötig ist, kannst du ja mit goto's tricksen.
-
so wie in deinen beispiel nicht ne (bei 1 soll beides bei 2 nur zweiteres ausgefuehrt werden)
du kannst nur die cases zusammen fuehren alacase1:
case2:
// do 1 and 2
break;anders wuesste ich es nicht - muesstes du das design anpassen
idee
case 1: case 2: if(1) // do1 // do2
-
Mr Evil schrieb:
anders wuesste ich es nicht - muesstes du das design anpassen
Wie gesagt, man kann da einiges mit goto's hinbiegen (goto case 1). Ob das designtechnisch dann das Optimum ist, ist natürlich eine andere Sache...
-
_matze schrieb:
Mr Evil schrieb:
anders wuesste ich es nicht - muesstes du das design anpassen
Wie gesagt, man kann da einiges mit goto's hinbiegen (goto case 1). Ob das designtechnisch dann das Optimum ist, ist natürlich eine andere Sache...
Ist ebenso diskutabel ob fall-throughs ein designtechnisches Optimum sind...
Ein break versehentlich zu vergessen kann passieren. Im nachhinein zu entscheiden ob das break absichtlich weggelassen oder versehentlich vergessen wurde (z.B. wenn das legacy code ist den du nicht selber geschrieben hast) ist sehr schwer.
Ein absichtlich eingesetztes goto case 1 dagegen entsteht nicht durch "Versehen" sondern zeigt das der ursprüngliche Entwickler das genau so haben wollte.
-
Gut, ich gebe zu, da ist gerade im Bezug auf Fremd-Code was dran. Dennoch finde ich persönlich fall-throughs irgendwie schöner...
-
_matze schrieb:
Gut, ich gebe zu, da ist gerade im Bezug auf Fremd-Code was dran. Dennoch finde ich persönlich fall-throughs irgendwie schöner...
Das sagt der, der auch Membervariablen auf den ersten Blick erkennen will...
Hier muss ich sagen das ein "goto case 1" einfach mehr aussagt und Fehler durch ein vergessenes break verhindert.
-
_matze schrieb:
Gut, ich gebe zu, da ist gerade im Bezug auf Fremd-Code was dran.
Auf lange Sicht gibt es KEINEN Unterschied zwischen Fremdcode und eigenem Code. Oder willst Du behaupten das Du auch nach einem Jahr noch jede einzele Entscheidung die Du in deinem Code mal gefällt hast noch kennst, also auch nach einem Jahr noch genau sagen kannst das Du an der Stelle absichtlich ein Fallthrough gemacht hast?
Realistisch betrachtet weisst Du das sogar schon nach einem MOnat nicht mehr genau...
Ja, Du solltest Code immer so schreiben das ein anderer Programmierer ohne lange Erläuterung ihn versteht. Aber was Du noch lernen mußt ist, daß Du selbst dieser andere Programmierer bist, nur halt Zeitversetzt.