| Autor |
Beitrag |
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Fr 31.07.09 08:57
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 31.07.09 09:35
Hi!
Das ist mir in C# leider noch nicht untergekommen, Delphi Prism könnte das natürlich
Gewöhn Dir doch mal bitte an, C#-Tags anstatt von Code-Tags zu benutzen. Danke
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: 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.
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
Christoph1972
      
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: 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?
_________________ Gruß
Christoph
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Fr 31.07.09 21:59
Der erste Grund ist natürlich mal wieder: Weil es in C und Java genauso ist  .
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 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
      
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Fr 31.07.09 22:16
Ah, interessant!  Vielen Dank!
_________________ Gruß
Christoph
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Fr 31.07.09 22:56
Eine etwas gepimpte Version könnte ich übrigens auch noch anbieten  .
Und wenn du mal ein wirkliches "switch on steroids", wie man so schön sagt, erleben willst, solltest du dir unbedingt das pattern matching von funktionalen Sprachen ansehen.
_________________ >λ=
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
|
|