2010-03-15 8 views
17

Ich habe gerade angefangen mit C# und ich habe ein paar Probleme. Gibt es eine Möglichkeit, das C# -Aquivalent der VB.NET Select-Anweisung wie folgt zu codieren?VB.NET Wählen Sie ... Fall Aussage Äquivalent in C#

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

Jede Hilfe würde sehr geschätzt werden.


Vielen Dank für die Eingabe so weit jetzt was ist, wenn ich wie im folgenden und ich möchte mehrere Kontrollen ein Event-Handler Haken eine etwas andere Aktion für jede Steuerung auszufü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 

Ist Gibt es eine Möglichkeit, die obige select-Anweisung in C# auszuführen, ohne verschachtelte ifs zu verwenden?

Antwort

14

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 ist es, eine Menge von IFS zu schreiben .

Zum Beispiel in VB.NET, können Sie 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 kein switch Konstrukt in C#, dass Sie etwas von dieser Art zu tun erlaubt. Sie werden wie so in Kreisverkehr codieren haben:

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 mit Double oder jede Art passieren zu arbeiten, die anstelle von diskreten Werten aus kontinuierlich gemacht wird, werden Sie if s verwenden, müssen Bekommen Sie die erforderliche Aktion.

Grund? C# switch erfordert Konstanten für die verschiedenen case s. Dies unterscheidet sich von der Select Case von VB.NET, die Schreibbereiche erlaubt.

+1

Es ist nur rund wegen der Perspektive. Zum Beispiel könnte die switch-Anweisung in nicht numerischen Fällen überlegen sein. –

5

Verwenden Sie eine switch Anweisung.

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 free online conversion tool ist, dass Sie VB.net zu C# und umgekehrt konvertieren.

9

Sie für die Switch-Anweisung suchen würde ...

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

Beachten Sie, dass die Pausen Import sind, sonst wird das Programm durch Ihre Fälle fallen. Sie sollten in der Lage sein, dies auf fast jeder C# Einführung zu finden ...

+1

Beachten Sie, dass Sie das Schlüsselwort 'break' nicht angeben müssen, wenn Sie eine Ausnahme auslösen oder stattdessen einen Wert zurückgeben. – intoOrbit

+1

true, aber wie eine Präferenz, ich mag im Allgemeinen eine einzelne Rückkehr von Methoden, anstatt von innerhalb eines Schalters zurückzukehren. – Paddy