Laden...

Sind in C# Werte*bereiche* bei switch möglich?

Erstellt von hypersurf vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.132 Views
H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 15 Jahren
Sind in C# Werte*bereiche* bei switch möglich?

Hallo zusammen,

ich habe mal eine Frage zur Switch-Anweisung:

Aus Visual Basic 6 bin ich es gewöhnt bei den verschiedenen Fällen (Cases) die ich mit Select Case abfrage, auch Wertebereiche abfragen zu können.
Das sieht in VB z. B. so aus:

Select Case mFileSize
        Case 0 To 999 ' Bytes
            FormatFileSize = Format(mFileSize) & " bytes"
        Case 1000 To 1023999 ' KB
            FormatFileSize = Format(mFileSize / 1024, "##0.0") & " KB"
        Case 1024000 To (1024 * 10 ^ 6) - 1 ' MB
            FormatFileSize = Format(mFileSize / (1024 ^ 2), "##0.0#") & " MB"
        Case Is > (1024 * 10 ^ 6)
            FormatFileSize = Format(mFileSize / (1024 ^ 3), "##0.0#") & " GB"
End Select

Ich habe leider keinerlei Beispiele hierzu in C# gefunden. Geht das in C# auch? Wenn ja, kann mir jemand bitte die Syntax posten? Google und die msdn spucken nichts hierzu aus.

Danke!

3.430 Beiträge seit 2007
vor 15 Jahren

Hallo hypersurf,

das geht AFAIK nicht in C#
Da baust du dir am Besten ein paar if-Abfragen ein.

Gruss
Michael

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 15 Jahren

Okay, alles klar. Danke!

D
496 Beiträge seit 2005
vor 15 Jahren

kuckst du hier

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

R
234 Beiträge seit 2007
vor 15 Jahren

Um nochmal zusammen zu fassen was in demondriver235s Link bezüglich deiner Frage steht, hier ein kurzes Beispiel:


switch(bar) {
    case 1:
    case 2:
    case 3:
        someMethod();
        break;
    case 4:
    case 5:
        someOtherMethod();
        break;
    default:
        someDefaultMethod();
}

Dabei ist zu beachten, dass man nur von einem Case zum nächsten "fallen" kann, wenn dieser keine Ausdrücke beinhaltet. Folgender Code lässt sich dem entsprechend nicht kompilieren.


switch(bar) {
    case 1:
        someMethod();
    case 2:
        someOtherMethod();
        break;
}

In deinem Fall, hypersurf, würde ich aber auch eher michlGs Vorschlag folgen.