Piszę kod w VB.NET, który używa instrukcji switch, ale w jednym z przypadków musi przejść do innego bloku. W języku C# będzie wyglądać tak:VB.NET Switch Statement GoTo Case
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;
}
Jednak nie wiem, jak przekonwertować to do VB.NET. Próbowałem to:
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
Ale gdy to zrobię, pojawia się błąd kompilatora: "Oczekiwano identyfikatora". W "Przypadku" jest zawrotna linia. Jakieś pomysły?
Czy używanie w tym przypadku instrukcji GoTo jest niewłaściwe? Wydaje się, że inaczej musiałbym to napisać ponownie.
I zmieniły mojego kodu do następująco:
If otherFactor AndAlso parameter = "mvrType" Then
'does something here
Else
' My original "Select Case statement" here without the case for "mvrType"
End If
Bardzo interesujące. Jaka jest korzyść z używania Select statement? Myślałem, że zastosowano tabelę odnośników? Tak czy siak - to jest to, co podejrzewałem (że VB.NET go nie obsługiwał). – KTF
Żadna instrukcja select lub instrukcja switch nie jest po prostu "magią" kompilatora w .NET, w rzeczywistości przekształca wszystko w coś trudniejszego do odczytania, jeśli ... Instrukcja else. –
Nie zawsze prawda (wiem, że ten komentarz jest dość stary, ale dla mnie nowy!) - http://blogs.msdn.com/abhinaba/archive/2006/12/13/why-can-we-only-use -constants-in-a-switch-case-statement.aspx – Ant