Edit: Sembra che mi sbagliavo nel ritenere che VB.NET non consente Caso ORing. Stavo pensando in C# e in IL e sembra che mi sbagliavo.
Tuttavia, come qualcuno ha sottolineato, il motivo per il codice non ha funzionato perché è stato il caso di 2 o 3 stava valutando 2 o 3 come un OR bit a bit e, quindi, la valutazione per Caso 3.
Per chiarimenti:
2 binary = 0000 0010
3 binary = 0000 0011
2 Or 3 binary = 0000 0011 (= 3)
Select Case 2
Case 0 '--> no match
Case 1 '--> no match
Case 2 Or 3 '(equivalent to Case 3 --> no match)
End Select
Tuttavia, sento che vorrei sottolineare che per il bene di prestazioni, non si dovrebbe utilizzare tali costrutti. Quando il compilatore incontra le istruzioni Select (passa in C#) proverà a compilarle usando le tabelle di ricerca e lo switch MSIL ma nel caso in cui si abbia qualcosa come Caso 1,2,11,55 il compilatore non sarà in grado di convertirlo in una tabella di ricerca e dovrà usare una serie di confronti (che è come usare If .. Else).
Il punto è che al fine di sfruttare realmente l'istruzione Select, i casi devono essere progettati pensando a questo. In caso contrario, l'unico vantaggio è la leggibilità del codice.
Un interruttore ben progettato è un'operazione O (1) mentre uno mal progettato (che è equivalente a una serie di istruzioni If..Then..Else) è un'operazione O (n).
il mio intento non è per il caso 0 e 1 per sfumare. Ma la virgola è ciò che cercavo. – Llyle
@downvoter, cura di spiegare? – JaredPar
-1, perché non risponde alla domanda come indicato. Offre piuttosto una soluzione alternativa a quella tentata dall'interrogante. La domanda è: in che modo VB interpreta l'operatore OR in un'istruzione Select? Altrimenti, la domanda deve essere modificata per corrispondere alla risposta. Ma non lo suggerirei perché @JohnT ha dato la risposta corretta. – systemovich