2014-05-22 7 views
9

Scheint Wenn ich die Cases zusammen stapeln, funktionieren sie nicht wie eins. Da VB.NET Cases nicht die Verwendung von Exit Select/Return erfordern, scheint es, dass jedes Mal automatisch ein neues Case darunter erkannt wird?VB.NET Stacking Wählen Sie Case Statements zusammen wie in Switch C#/Java

Dim Test as Integer = 12 

Select Case Test 
    Case 11 
    Case 12 
    Case 13 
    MsgBox.Show("Could be 11 or 12 or 13?") 
End Select 

Es scheint nicht nur 13 Werke zu arbeiten ..

Gotta always remember this rule that you can't stack Cases like this from now on
Es ist nicht leicht, sich daran zu erinnern, wenn richtig applications.`

+0

Die [dotnet perls Website] (http://www.dotnetperls.com/select-vbnet) hat mich in der gleichen Fehler gefahren ... – Zac

+0

Haha ja jemand muss auf dieser Website melden, dass sie es falsch verstanden haben – SSpoke

Antwort

14

Ihr Verständnis ist die Portierung. VB wird nicht "durchfallen".

ein einzelnes Case Geben und trennen Sie jeden Ausdruck mit einem Komma:

Select Case Test 
    Case 11, 12, 13 
     MsgBox.Show("Could be 11 or 12 or 13?") 
End Select 

Alternativ können Sie eine Reihe mit dem To Schlüsselwort verwenden, das Gleiche zu erreichen:

Select Case Test 
    Case 11 To 13 
     MsgBox.Show("Could be 11 or 12 or 13?") 
End Select 

Weitere Informationen , siehe the documentation.

+1

Danke Sie sollte das obige Muster erkennen, wenn sie alle leer sind, aber dann wirst du die Fähigkeit verlieren, es als Ignorierfilter zu verwenden. – SSpoke

+0

Das ist zu argumentieren. Ich kann dem zustimmen, weil ich an das Muster gewöhnt bin, aber es könnte für viele VB-Leute verwirrend sein. Betrachten Sie den Fall, in dem Sie nach dem Fall eine einzelne Anweisung hatten, die Sie während des Debugging auskommentieren. Da VB keine "Pause" benötigt, wäre es wirklich schwer das neue Verhalten zu erklären - warum es anfängt durchzukommen. Es ist kein explizites Verhalten, noch ist es klar, den Code zu betrachten. –

+1

Ya jetzt, dass ich darüber nachdenken sie sollten es wahrscheinlich nicht zu tbh jetzt ändern, da es ein Teil davon ist, wie BASIC seit Jahren von Anfang an funktioniert, und es scheint, mit einem besseren Feature, dass der Schalter nicht nur gerecht zu ersetzen gesehen die '<' '>' Vergleiche in verwandten Themen ziemlich mächtige Sachen. 'Erinnere dich immer an diese Regel, von der du sie nicht mehr stapeln kannst, es ist nicht einfach, sie bei der Portierung von Anwendungen zu merken – SSpoke