VB.NET SELECT… CASE ANGEBRÜFUNG Equivalent in C# äquivalent
-
20-09-2019 - |
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?
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 if
s, um die erforderliche Aktion zu erhalten.
Grund? C#'s switch
erfordert Konstanten für die verschiedenen case
s. 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: