2014-05-22 15 views
9

Wydaje się, że jeśli stosy są układane razem, nie działają tak jak jeden. Ponieważ obudowy VB.NET nie wymagają użycia Exit Select/Return, wydaje się automatycznie wstawiać to za każdym razem, gdy zostanie wykryty nowy przypadek pod nim?Układanie w VB.NET Zaznaczanie instrukcji Case razem jak w przełączniku 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 

Nie wydaje się, aby pracować tylko 13 prac ..

Gotta always remember this rule that you can't stack Cases like this from now on
To nie jest łatwe do zapamiętania go przy przenoszeniu applications.`

+0

[strona dotnet perls] (http://www.dotnetperls.com/select-vbnet) wprowadził mnie w błąd ... – Zac

+0

Haha, tak, ktoś musi zgłosić się na tę stronę, że źle to zrobili – SSpoke

Odpowiedz

14

Zrozumienie jest poprawna. VB nie "wpadnie".

Określ jeden Case i oddzielić wyrażenie przecinkami:

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

Alternatywnie, można użyć szeregu ze słowem kluczowym To aby osiągnąć to samo:

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

Aby uzyskać więcej informacji , patrz the documentation.

+1

powinien sprawić, by wykrył wzorzec powyżej, jeśli wszystkie są puste, ale potem znowu stracisz możliwość użycia go jako filtra ignorującego. – SSpoke

+0

To jest argument. Mogę się zgodzić, ponieważ jestem przyzwyczajony do tego schematu, ale może to być mylące dla wielu ludzi VB. Rozważmy przypadek, w którym po wydaniu miałeś jedno zdanie, które podczas debugowania skomentowałeś. Ponieważ VB nie wymaga "zerwania", naprawdę trudno byłoby wytłumaczyć nowe zachowanie - dlaczego tak się zaczęło. To nie jest jednoznaczne zachowanie, ani nie jest jasne, patrząc na kod. –

+1

Ya teraz, że myślę o tym, że prawdopodobnie nie powinien zmienić go do teraz tbh, ponieważ jest to część tego, jak BASIC działał od początku przez wieki i wydaje się, że nadrabia to z lepszą funkcją, że przełącznik nie ma właśnie postrzega porównania w powiązanych wątkach w dość potężny sposób. "Zawsze pamiętaj o tej zasadzie, że nie możesz ich odkładać od teraz, nie jest to łatwe do zapamiętania podczas przenoszenia aplikacji" – SSpoke