VB.NET Switch Statement GoTo Fall
Ich bin ein wenig code schreiben, in VB.NET verwendet eine switch-Anweisung, sondern in einem der Fälle, die es braucht, um zu springen zu einem anderen block. In C# würde es so Aussehen:
switch (parameter)
{
case "userID":
// does something here.
case "packageID":
// does something here.
case "mvrType":
if (otherFactor)
{
// does something here.
}
else
{
goto default;
}
default:
// does some processing...
break;
}
Aber ich weiß nicht, wie zu konvertieren, das auf VB.NET. Ich versuchte dies:
Select Case parameter
Case "userID"
' does something here.
Case "packageID"
' does something here.
Case "mvrType"
If otherFactor Then
' does something here.
Else
GoTo Case Else
End If
Case Else
' does some processing...
Exit Select
End Select
Aber wenn ich das mache bekomme ich einen compiler-Fehler: "Bezeichner erwartet". Es ist eine Wellenlinie unter "Fall". Irgendwelche Ideen?
Außerdem ist es falsch zu verwenden, eine GoTo-Anweisung in diesem Fall? Es scheint, jeder andere Weg würde ich neu schreiben.
Habe ich geändert mein code wie folgt:
If otherFactor AndAlso parameter = "mvrType" Then
'does something here
Else
' My original "Select Case statement" here without the case for "mvrType"
End If
InformationsquelleAutor der Frage KTF | 2009-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Entsprechung in VB.NET dass ich finden konnte. Für dieses Stück code sind Sie wahrscheinlich gehen zu wollen, um es zu öffnen in Reflektor und ändern Sie den Ausgang Typ VB, um die genaue Kopie von dem code, den Sie brauchen. Zum Beispiel, wenn ich die folgenden in-Reflektor:
er gab mir die folgende VB.NET Ausgabe.
Wie Sie sehen können, erreichen Sie den gleichen switch-case-Anweisung mit If-Anweisungen. In der Regel ich don ' T empfehlen dies, weil es macht es schwerer zu verstehen, aber VB.NET scheint nicht zu unterstützen, die gleiche Funktionalität, und mit dem Reflektor vielleicht der beste Weg, um den code zu erhalten, die Sie brauchen, um es zu bekommen arbeiten mit eine Menge Schmerz.
Update:
Bestätigt, das Sie nicht tun können, die genaue gleichen Sache, in VB.NET, aber es hat einige andere nützliche Dinge. Sieht aus wie der IF-Anweisung conversion ist Ihre beste Wette, oder vielleicht einige Umgestaltung. Hier ist die definition für Select...Case -
http://msdn.microsoft.com/en-us/library/cy37t14y.aspx
InformationsquelleAutor der Antwort Nick Berardi
Warum nicht tun Sie es einfach so:
Ich bin mir nicht sicher, ob Sie nicht mit einem case else am Ende eine große Sache ist oder nicht, aber es scheint, wie Sie nicht wirklich brauchen, die gehen, wenn Sie setzen Sie ihn einfach in die else-Anweisung der if.
InformationsquelleAutor der Antwort ryanulit
Warum gehst du nicht einfach umgestalten der Standard-Fall wird als eine Methode und rufen Sie es von beiden Orten aus?
Dies sollte besser lesbar und ermöglicht es Ihnen, ändern Sie den code später in einer effizienteren Weise.
InformationsquelleAutor der Antwort Nicolas Irisarri
Ich bin nicht sicher, es ist eine gute Idee, ein Springen, aber wenn Sie es verwenden möchten, können Sie etwas wie das hier tun:
Wie gesagt, obwohl es funktioniert, Springen ist keine gute Praxis, also hier sind einige alternative Lösungen:
Mit elseif...
Mit einem booleschen Wert...
Statt der Einstellung eine Boolesche variable, die Sie auch nennen könnte, eine Methode direkt in beiden Fällen...
InformationsquelleAutor der Antwort Meta-Knight
In VB.NET wenden Sie mehrere Bedingungen, auch wenn die anderen Bedingungen gelten nicht für die Select-parameter. Siehe unten:
InformationsquelleAutor der Antwort Zachafer
sollten Sie erklären label erste
verwenden Sie diese :
InformationsquelleAutor der Antwort Sadegh
InformationsquelleAutor der Antwort
InformationsquelleAutor der Antwort Taran
Gibt es einen Grund für das springen? Wenn es nicht erfüllen, wenn Kriterium ist, es wird einfach nicht die Funktion und gehen Sie zum nächsten Fall.
InformationsquelleAutor der Antwort Jason Zielke