Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   C# Bereiche bei Case-Label angeben? (https://www.delphipraxis.net/44659-bereiche-bei-case-label-angeben.html)

Christian Seehase 22. Apr 2005 12:09


Bereiche bei Case-Label angeben?
 
Moin Zusammen,

ich stehe gerade vor dem Problem, dass ich bei einem case Label einen Bereich angeben möchte, der für den jeweiligen Zweig Gültigkeit hat, allerdings konnte ich dazu nirgends etwas finden, ich konnte immer nur etwas finden, wie es mit einem Einzelwert geht.

In Delphi ist es ja kein Problem, 'a'..'z', und der Bereich der Kleinbuchstaben wird berücksichtigt.

Aber wie geht das in C#? :gruebel:

alcaeus 22. Apr 2005 12:13

Re: Bereiche bei Case-Label angeben?
 
Hallo Christian,

AFAIR gibt es in C (und ich denke in C# ist es nicht viel anders) keine Moeglichkeit, einen Bereich in einen case reinzugeben. Allerdings ist das switch-Statement so aufgebaut, dass es vom ersten zutreffenden case alles ausfuehrt, bis es zu einem break trifft, egal ob dazwischen andere case liegen.
Also muesste es so gehn:
Code:
switch (...)
{
  case 'a':
  case 'b':
  ...
  case 'z': foo(bar); break;
}
Also waere es evtl. geschickter mit einem
Code:
if ((a >= 'a') && (a <= 'z'))
zu arbeiten.

Ich lass mich allerdings gern korrigieren.

Greetz
alcaeus

Waldteufel 22. Apr 2005 12:15

Re: Bereiche bei Case-Label angeben?
 
Hi.

Alcaeus hat leider Recht... So wie in Delphi geht es leider gar nicht... :-(

Aber so:

Code:
select (x) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
    System.Console.Out.WriteLn("1..10 C#");
    break;
}
entspricht:

Delphi-Quellcode:
case x of
  1..10 : WriteLn('1..10 Delphi');
end;
Es ist in diesem Falle gescheiter mit einem

Code:
if ((x >= 1) and (x <= 10)) {
  System.Console.Out.WriteLn("1..10 C# mit IF");
}
zu arbeiten... ;-)

//edit : Programmierfehler korrigiert... :wall:
//edit2 : Noch einer... :wall:
//edit3 : Ich hasse C#... :wall:

Christian Seehase 22. Apr 2005 12:29

Re: Bereiche bei Case-Label angeben?
 
Moin Zusammen,

dann danke ich für die Antworten.
Die andere Variante (durchgehende Case-Label) kannte ich schon, aber ich konnte mir einfach nicht vorstellen, dass man keine Bereiche angeben kann. (zumal der Entwickler der gleiche wie der von Delphi ist :mrgreen:)

Wenigstens lag' es dann nicht an mir, dass ich nichts finden konnte ;-)

Waldteufel 22. Apr 2005 12:35

Re: Bereiche bei Case-Label angeben?
 
Hi.

Zitat:

Zitat von Christian Seehase
(zumal der Entwickler der gleiche wie der von Delphi ist :mrgreen:)

C# ist eben (hauptsächlich) von C++ abgeleitet und das ist von C abgeleitet... ;-)

[edit] Ich berichtige mich: C# ist von Java abgeleitet... :wall: [/edit]

MathiasSimmack 22. Apr 2005 14:23

Re: Bereiche bei Case-Label angeben?
 
Zitat:

Zitat von Waldteufel
Alcaeus hat leider Recht... So wie in Delphi geht es leider gar nicht... :-(

Warum "leider"? So arg kompliziert ist das ja nun auch nicht.

Zitat:

//edit : Programmierfehler korrigiert... :wall:
//edit2 : Noch einer... :wall:
//edit3 : Ich hasse C#... :wall:
//edit4 : select? :gruebel: Bringst du da jetzt nicht VB und C# durcheinander? Insbesondere, weil das "select" von VB durchaus wie in Delphi angewendet werden kann:
Code:
Select Number  ' Evaluate Number.
   Case 1 To 5   ' Number between 1 and 5, inclusive.
      Debug.WriteLine("Between 1 and 5")
   ' The following is the only Case clause that evaluates to True.
   Case 6, 7, 8   ' Number between 6 and 8.
      Debug.WriteLine("Between 6 and 8")
   Case 9 To 10   ' Number is 9 or 10.
      Debug.WriteLine("Greater than 8")
   Case Else  ' Other values.
      Debug.WriteLine("Not between 1 and 10")
End Select
:zwinker: Stammt aus dem .NET Framework SDK 1.1.

Waldteufel 22. Apr 2005 14:27

Re: Bereiche bei Case-Label angeben?
 
Hi.

Zitat:

Zitat von MathiasSimmack
//edit4 : select? :gruebel: Bringst du da jetzt nicht VB und C# durcheinander? Insbesondere, weil das "select" von VB durchaus wie in Delphi angewendet werden kann:

Nein. :mrgreen: Ich bringe C / C++ und C# durcheinander... :mrgreen:

Wie heißt das denn in C#? So? :gruebel:

Code:
case (x) {
  1: blabla; break;
  2: hicks;
  3: hoax; break;
  4: 5: ups; break;
};

alcaeus 22. Apr 2005 14:28

Re: Bereiche bei Case-Label angeben?
 
Zitat:

Zitat von Waldteufel
Wie heißt das denn in C#? So? :gruebel:

Code:
case (x) {
  1: blabla; break;
  2: hicks;
  3: hoax; break;
  4: 5: ups; break;
};

Nein, switch-case, so wie ich es gepostet habe.

Greetz
alcaeus

Waldteufel 22. Apr 2005 14:30

Re: Bereiche bei Case-Label angeben?
 
Hi.

Bei so vielen Sprachen MUSS einem ja wirr im Kopf werden... :drunken:

MathiasSimmack 22. Apr 2005 14:31

Re: Bereiche bei Case-Label angeben?
 
Genau, alca! :) Aber select und C/C++? :gruebel: Kenn ich nicht. Ich habe auch in C bloß immer switch benutzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz