Entwickler-Ecke
C# - Die Sprache - switch
ene - Fr 31.07.09 08:57
Titel: switch
Moin,
kann man mit switch auch Wertebereiche verwenden?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| switch (i) { case (i < 10): break; case (i > 10 && i < 20) break; } |
Moderiert von
Christian S.: Topic aus Basistechnologien verschoben am Fr 31.07.2009 um 09:31
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Christian S. - Fr 31.07.09 09:35
Hi!
Das ist mir in C# leider noch nicht untergekommen, Delphi Prism könnte das natürlich :P
Gewöhn Dir doch mal bitte an, C#-Tags anstatt von Code-Tags zu benutzen. Danke :-)
Grüße
Christian
JüTho - Fr 31.07.09 09:48
Christians Antwort kann noch klarer formuliert werden: Nein, in C# geht es so nicht. Es gibt nur die Möglichkeit, alle (!) Varianten einzeln aufzuführen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| switch (i) { case 0: case 1: case 2: case 9: break; case 10: case 11: case 12: case 19: break; } |
Gruß Jürgen
ene - Fr 31.07.09 10:08
@Christian Bis gerade eben fiel mir das nicht mal auf:
C#-Quelltext
1: 2: 3: 4:
| while (tags != "cs") { Brain.Input("Du sollst cs-Tags verwenden"); } |
I'll do my very best ;)
Danke für die Antworten, schade eigentlich, in anderen Sprachen kenne ich das auch. Muss ich mir halt eine Funktion für erstellen.
Christoph1972 - Fr 31.07.09 20:37
Ja, schade das es nicht geht, das wäre recht praktisch. VB.Net kanns auch nicht. Mir ist aber die Tage aufgefallen, das man mit C# nur Konstanten überprüfen kann, mit VB.Net können es auch Variablen sein. Kennt jemand den Grund warum das so ist oder sein könnte?
Kha - Fr 31.07.09 21:59
Der erste Grund ist natürlich mal wieder: Weil es in C und Java genauso ist :zwinker: .
Ich denke, dass es den Erfindern von switch einfach um eine eindeutige Zuordnung von Elementen eines Datentyps und Anweisungen ging, wie es gerade bei State Machines vorkommt und
interessante Optimierungen [
http://en.wikipedia.org/wiki/Switch_statement#Compilation] zulässt.
Mit variablen Cases wäre diese eindeutige Zuordnung gebrochen und es müsste erst einmal definiert werden, wass passieren soll, wenn mehrere Cases gleichzeitig erfüllt sind.
Christoph1972 - Fr 31.07.09 22:16
Ah, interessant!:les: Vielen Dank!
jaenicke - Sa 01.08.09 09:48
Lassen sich die Bereiche, um die es geht, denn mathematisch definieren? Im obigen Beispiel wäre switch..case ja z.B. via div evtl. möglich. Und dann wären da noch Arrays möglich.
Aber es ist eben wirklich die Frage der genauen Anwendung und wie gut optimiert werden soll.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!