Frage

Ich habe gerade angefangen, C# zu verwenden und habe ein paar Probleme. Gibt es eine Möglichkeit, das C# Äquivalent der VB.NET -Auswahlanweisung wie folgt zu codieren?

Select Object.Name.ToString()
    Case "Name1"
        'Do something
    Case "Name2"
        'Do something else
    Case Else
        'Do the default action
End Select

Jede Hilfe wäre sehr geschätzt.


Vielen Dank für die bisherige Eingabe, was ist, wenn ich mehrere Steuerelemente an einen Ereignishandler wie im Folgenden anhege, und ich möchte für jede Steuerung eine etwas andere Aktion ausführen:

Private Sub Button_Click(sender as Object, e as EventArgs) _
  Handles button1.Click, Button2.Click

    'do a general activity

    Select CType(sender, Button).Name
        Case button1.Name
            'do something
        Case button2.Name
            'do something else
        Case Else
            'do the defalut action
    End Select
End Sub

Gibt es eine Möglichkeit, die oben genannte ausgewählte Anweisung in C# zu machen, ohne verschachtelte IFs verwenden zu müssen?

War es hilfreich?

Lösung

Ich bin gekommen, um im Laufe der Zeit zu finden, dass einige vb.net Select...Case Konstrukte gelten nicht in C#, und der einzige Weg besteht darin, viele IFs zu schreiben.

Zum Beispiel können Sie in VB.NET schreiben:

Dim num as Integer = 5

Select Case num
    Case 1 to 10
        'do something

    Case 11 to 20
        'do another thing

    Case Else
        'do the default
End Select

Aber es gibt keinen switch Konstruieren Sie in C#, mit dem Sie etwas Ähnliches tun können. Sie müssen im Kreisverkehr wie SO codieren:

int num = 5;

switch (num)
{
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
        //do something
        break;
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
        //do something else
        break;
    default:
        //do the default
        break;
}

Oder wenn Sie zufällig mit arbeiten Double oder jede Art, die aus kontinuierlich anstelle diskreter Werte besteht, müssen Sie verwenden ifs, um die erforderliche Aktion zu erhalten.

Grund? C#'s switch erfordert Konstanten für die verschiedenen cases. Dies unterscheidet sich von VB.NETs Select Case Das ermöglicht Schreibbereiche.

Andere Tipps

Sie würden nach der Switch -Anweisung suchen ...

switch (Object.Name.ToString())
{
   case  "Name1":
     //Do something
     break;
   default:
     //default
     break;
}

Beachten Sie, dass die Pausen importiert sind, andernfalls fällt das Programm durch Ihre Fälle. Sie sollten in der Lage sein, dies in fast jeder C# Einführung zu finden ...

Verwenden ein switch Aussage.

switch (object.Name.ToString()) {
  case "Name1":
    break;
    //Do something 
  case "Name2":
    break;
    //Do something else 
  default:
    break;
   //Do the default action 
}

Und vergessen Sie nicht, dass es eine gibt Kostenloses Online -Conversion -Tool Dadurch können Sie VB.NET in C# und Viceversa konvertieren.

Mit C# 7 wurde Switch erheblich verbessert, und es ist jetzt möglich, in den Fällen mehr Bedingungen anzuwenden, obwohl es immer noch nicht so "sauber" ist wie die VB -Version. ZB Sie könnten so etwas tun wie:

switch (examScore)
{
  case int es when es >= 90: grade = "A"; break;
  case int es when es >= 80: grade = "B"; break;
  case int es when es >= 70: grade = "C"; break;
  case int es when es >= 60; grade = "D"; break;
  default: grade = "F"; break;
}

Entnommen aus / Referenzen:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top