Qualcuno può spiegarmelo per favore?Qual è la differenza tra IF-ELSE e SWITCH?
risposta
Sono piuttosto simili ma ognuno ha alcune caratteristiche speciali.
interruttore
switch
di solito è più compatto di molti nidificatoif else
e, quindi, più leggibile- Se si omette il
break
tra due corpi interruttore, si può cadere fino al prossimo caso in molte lingue simili a C. Conif else
avresti bisogno di ungoto
(che non è molto bello per i tuoi lettori ... se la lingua supporta logoto
). - Nella maggior parte delle lingue,
switch
accetta solo tipi primitivi come chiavi e costanti come casi. Ciò significa che può essere ottimizzato dal compilatore usando una tabella di salto che è molto veloce. Non è chiaro come formattare correttamente lo
switch
. Semanticamente, i casi sono obiettivi di salto (come etichette pergoto
) che dovrebbero essere allineati a sinistra. Le cose peggiorano quando si hanno parentesi graffe:case XXX: { } break;
Oppure le parentesi devono essere allineate? Il rinforzo di chiusura dovrebbe andare dietro allo
break
? Quanto sarebbe illeggibile? ecc.- In molte lingue,
switch
accetta solo alcuni tipi di dati.
if-else
if
permette espressioni complesse nella condizione mentre l'interruttore vuole una costante- Non si può dimenticare accidentalmente le
break
traif
s ma si può dimenticare ilelse
(specialmente durante cut'n'paste) - accetta tutti i tipi di dati.
Una nota per ricordare che il caso ricade nel comportamento è linguaggio spcific, c ti consentirà felicemente di farlo, ma C# pone alcune restrizioni su come passare da un'istruzione di un caso a un altro. –
una delle maggiori differenze è il modo in cui controllano la condizione - con 'if-else' puoi solo controllare l'uguaglianza, mentre con' switch' puoi fare un po 'di più .. –
Credo che la differenza principale è che in blocchi if-else possiamo testare conditions.but non va esattamente nello stesso modo nella interruttore
IF altro - E 'usato per prendere una decisione
Istruzione switch: viene utilizzata per verificare il valore della variabile data rispetto a un elenco di valori case.
La differenza principale è che switch
dispacci immediatamente al case
questione, tipicamente attraverso un salto indicizzato, invece di dover valutare tutte le condizioni che sarebbero necessarie in una catena if-else
, il che significa che il codice di fine la catena viene raggiunta più lentamente del codice all'inizio.
Che a sua volta impone alcune restrizioni alla dichiarazione switch
che la catena if-else
non ha: non in grado di gestire tutti i tipi di dati, e tutti i valori case
deve essere costante.
The difference between Switch and if-else statement is below:
This is the general syntax of if-else ladder:
if (condition1) { //Body of if }
else if (condition2) { //Body of if }
else if (condition3) { //Body of if }
And this is the general syntax for switch:
switch (variable)
{
case <variable value1>: //Do Something
break;
case <variable value2>://Do Something
break;
default: //Do Something
break;
}
# The if-else ladder is of type strict condition check,
# while switch is of type jump value catching.
I vantaggi di passare if-else scaletta:
- Un'istruzione switch funziona molto più veloce di scala equivalente if-else. È perché il compilatore genera una tabella di salto per uno switch durante la compilazione. Di conseguenza, durante l'esecuzione, invece di verificare quale caso è soddisfatto, decide solo quale caso deve essere eseguito.
- È più leggibile e in confronto alle istruzioni if-else.
Differenze tra if-else e switch
Espressione all'interno if decidere se l'esecuzione delle istruzioni all'interno se blocco o in blocco else. D'altra parte, l'espressione all'interno dell'istruzione switch decide quale caso eseguire.
Se l'istruzione delle esecuzioni controlla l'uguaglianza e l'espressione logica. D'altra parte, passare i controlli solo per l'uguaglianza.
L'istruzione if valuta un numero intero, un carattere, un puntatore o un tipo in virgola mobile o un tipo booleano. D'altra parte, l'istruzione switch valuta solo il carattere o un tipo di dati intero.
La sequenza di esecuzione è come una delle istruzioni sotto se il blocco verrà eseguito o le istruzioni in un'altra istruzione di blocco verranno eseguite. D'altra parte l'espressione in switch statement decide quale caso da eseguire e se non si applica un'istruzione break dopo ogni caso verrà eseguita fino alla fine dell'istruzione switch.
Se espressione all'interno se i giri in uscita sono falsi, verrà eseguita l'istruzione all'interno del blocco else. Se l'espressione all'interno dell'istruzione switch risulta essere falsa, vengono eseguite le istruzioni predefinite.
È difficile modificare le istruzioni if-else in quanto è noioso tracciare dove è richiesta la correzione. D'altra parte è facile modificare le istruzioni switch in quanto facili da tracciare.
Solo un puntatore: non avrai molte risposte utili se non prendi il tempo per formulare correttamente la domanda. –
Non importa :) è stato fatto. –
C'è già una domanda su SO: [Switch vs if-else] (http://stackoverflow.com/questions/97987/switch-vs-if-else) ** [EDIT] **
Come "lc "indicato in un commento a questa risposta, la domanda di cui sopra non è un duplicato, ma potrebbe ancora darti una buona idea del funzionamento e di cosa usare se si verifica una situazione specifica. – RuudKok