2012-10-19 14 views

Odpowiedz

14
case 1: 
case 2: 
case 3: 
    aMethod(); 
    break; 
case 4: 
    anotherMethod(); 
    break; 

To działa, ponieważ kiedy zdarza się przypadek 1 (na przykład), to spada aż do przypadku 2 (nie break oświadczenie), która następnie opada aż do Przypadek 3.

4

Jasne, można pozwalają case sekcje klauzulą ​​1 & 2 do „upadku poprzez” do klauzuli 3, a następnie break z rachunku switch potem:

case 1: 
case 2: 
case 3: 
    aMethod(); 
    break; 
case 4: 
    anotherMethod(); 
    break; 
+0

co jeśli 3 i 4 ma pewną wspólną część, ale 4 wykonuje pewne dodatkowe rzeczy –

+0

W takim przypadku można pozwolić 3 "fall through" 4. Pytanie tutaj wskazuje, że 3 i 4 nie mają wspólnej funkcji. – Reimeus

+0

Cóż, nie, nie możesz pozwolić, aby 3 spadło do 4. W takim przypadku wszystko, co zrobiono dla przypadku 4, zawsze byłoby gotowe dla przypadku 3, jak również to 3 będzie robić dodatkowe rzeczy (przed upadkiem). Używając 'przełącznika', możesz zrobić tylko dodatkowe rzeczy _ przedtem ... często. Jeśli potrzebujesz innej logiki, musisz użyć innych struktur sterujących (lub instrukcji 'if' zagnieżdżonych w obudowach przełączników, które uważam za brzydkie). –

3

Poniżej jest najlepsze, co możesz zrobić

case 1: 
case 2: 
case 3: 
    aMethod(); 
    break; 
case 4: 
    anotherMethod(); 
    break; 
3

Nazywa się "nie mieści się" wzoru:

case 1: // fall through 
case 2: // fall through 
case 3: 
    aMethod(); 
    break; 
case 4: 
    anotherMethod(); 
    break; 
Powiązane problemy