Autor Beitrag
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Fr 31.07.09 08:57 
Moin,

kann man mit switch auch Wertebereiche verwenden?

ausblenden 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 user profile iconChristian S.: Topic aus Basistechnologien verschoben am Fr 31.07.2009 um 09:31
Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt

_________________
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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:
ausblenden 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:  // usw.
  case  9:
    //  tu etwas
    break;
  case 10:
  case 11:
  case 12:  // usw.
  case 19:
    //  tu etwas
    break;
}

Gruß Jürgen
ene Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Fr 31.07.09 10:08 
@Christian Bis gerade eben fiel mir das nicht mal auf:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 31.07.09 22:16 
Ah, interessant!:les: Vielen Dank!

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19340
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.