Czy ktoś może mi to wyjaśnić?Jaka jest różnica między IF-ELSE i SWITCH?
Odpowiedz
Są bardzo podobne, ale każdy ma kilka specjalnych funkcji.
przełącznik
switch
jest zazwyczaj bardziej zwarty niż wiele zagnieżdżonychif else
a zatem bardziej czytelnej- Jeśli pominąć
break
między dwa przypadki przełącznika, można spaść do następnej sprawy wiele języków w języku C. Zif else
potrzebujeszgoto
(co nie jest zbyt miłe dla twoich czytelników ... jeśli język w ogóle obsługujegoto
). - W większości języków
switch
przyjmuje tylko typy pierwotne jako klucz i stałe jako przypadki. Oznacza to, że może być zoptymalizowany przez kompilator za pomocą bardzo szybkiego stołu skoku. Nie jest jasne, jak prawidłowo sformatować
switch
. Semantycznie, przypadki są celami skoku (jak etykiety dlagoto
), które powinny być wyrównane w lewo. Sytuacja pogarsza się, gdy masz nawiasy klamrowe:A może szelki powinny być dopasowane do własnych? Czy klamra zamykająca powinna znajdować się za
break
? Jak to by było nieczytelne? itp.- W wielu językach
switch
akceptuje tylko niektóre typy danych.
if-else
if
pozwala złożonych wyrażeń w warunkach, gdy przełącznik chce stała- Nie można przypadkowo zapomnieć
break
międzyif
s, ale można zapomnieć oelse
(szczególnie podczas cut'n'paste) - akceptuje wszystkie typy danych.
Jedna uwaga, aby wspomnieć, że przypadek wynika z zachowania jest język spcific, c na szczęście pozwoli to zrobić, ale C# nakłada pewne ograniczenia na przechodzenie przez jedną sprawę do drugiej. –
jedną z głównych różnic jest sposób, w jaki sprawdzają warunek - za pomocą 'if-else' możesz sprawdzić tylko równość, podczas gdy z' switch' możesz zrobić trochę więcej .. –
myślę, że główną różnicą jest to, że w if-else bloków możemy przetestować conditions.but nie idzie dokładnie w taki sam sposób, w przełączniku
IF indziej - służy za poświęcenie decyzje
Instrukcja switch - służy do testowania wartości danej zmiennej względem listy wartości case.
Główną różnicą jest to, że switch
depesz natychmiast do case
zainteresowanej, zwykle poprzez indeksowanego skoku, zamiast oceniać wszystkie warunki, które byłyby wymagane w łańcuchu if-else
, co oznacza, że kod na końcu łańcuch jest osiągany wolniej niż kod na początku.
To z kolei nakłada pewne ograniczenia na rachunku switch
że łańcuch if-else
nie ma: nie może obsługiwać wszystkie typy danych, a wszystkie wartości case
musi być stała.
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.
Zalety przełączyć if-else drabiny:
- Oświadczenie przełącznik działa znacznie szybciej niż odpowiednik if-else drabiny. Dzieje się tak, ponieważ kompilator generuje tabelę przeskoku dla przełącznika podczas kompilacji. W konsekwencji, podczas wykonywania, zamiast sprawdzania, która sprawa jest spełniona, decyduje ona tylko, która sprawa ma być wykonana.
- Jest bardziej czytelny w porównaniu do instrukcji if-else.
Różnice między if-else i przełączyć
Expression wewnątrz if zdecydować, czy wykonać instrukcje wewnątrz bloku if lub w innym bloku. Z drugiej strony wyrażenie wewnątrz instrukcji switch decyduje o tym, która sprawa ma zostać wykonana.
Instrukcja if-esle sprawdza równość i wyrażenie logiczne. Z drugiej strony przełączniki sprawdzają tylko dla równości.
Instrukcja if oblicza liczbę całkowitą, znak, wskaźnik lub typ zmiennoprzecinkowy lub typ boolowski. Z drugiej strony, instrukcja switch oblicza tylko znak lub typ danych integer.
Sekwencja wykonania jest jak instrukcja pod, jeśli blok zostanie wykonany, czy też instrukcje pod innym będzie wykonane. Z drugiej strony wyrażenie w instrukcji switch decyduje o tym, która sprawa ma zostać wykonana, a jeśli nie zastosujesz instrukcji break po każdym przypadku, będzie ona wykonywana do końca instrukcji switch.
Jeśli wyrażenie wewnątrz, jeśli zwroty są fałszywe, zostanie wykonane polecenie wewnątrz bloku innego. Jeśli wyrażenie wewnątrz instrukcji switch okaże się fałszywe, wówczas wykonywane są instrukcje domyślne.
Trudno jest edytować instrukcje if-else, ponieważ nużące jest śledzenie, gdzie wymagana jest poprawka. Z drugiej strony można łatwo edytować instrukcje przełączników, ponieważ są one łatwe do śledzenia.
- 1. Jaka jest różnica między? : i ||
- 2. Jaka jest różnica między $ i $$?
- 3. Jaka jest różnica między Subtotal i BaseSubtotal?
- 4. Jaka jest różnica między DetachedCriteria i ICriteria
- 5. Jaka jest różnica między & # x00A0; i ?
- 6. Jaka jest różnica między lex i yacc
- 7. jaka jest różnica między dijit i dojo
- 8. Jaka jest różnica między Control.Select() i Control.Focus()?
- 9. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 10. Jaka jest różnica między apletami i SWING?
- 11. Jaka jest różnica między session.commit() i session.flush()?
- 12. Jaka jest różnica między ImageView.setBackgroundResource i ImageView.setImageResource?
- 13. Jaka jest różnica między Konwertuj i parsuj?
- 14. Jaka jest różnica między JSP i JSTL?
- 15. Jaka jest różnica między Lazarus i CodeTyphon
- 16. Jaka jest różnica między crc32 i crc32b?
- 17. Jaka jest różnica między TypedArray.getInteger() i TypedArray.getInt()?
- 18. jaka jest różnica między ARM7 i ARM7s
- 19. Jaka jest różnica między http_build_str() i http_build_query()?
- 20. Jaka jest różnica między "CompletionStage" i "CompletableFuture"?
- 21. Jaka jest różnica między mock.patch.object (... i mock.patch (
- 22. Jaka jest różnica między GetBlobReference i GetBlobReferenceFromServer?
- 23. Jaka jest różnica między NSLayoutAttributeBaseline i NSLayoutAttributeBottom?
- 24. Jaka jest różnica między handlebar.js i handlebar.runtime.js?
- 25. Jaka jest różnica między innerText i outerText?
- 26. Jaka jest różnica między Json i Jsonp?
- 27. Jaka jest różnica między WCF i WPF?
- 28. Jaka jest różnica między runghc i runhaskell?
- 29. Jaka jest różnica między -hivevar i -hiveconf?
- 30. Jaka jest różnica między writeUTF i writeChars?
Po prostu wskaźnik - nie otrzymasz wielu pomocnych odpowiedzi, jeśli nie poświęcisz czasu na poprawne sformułowanie pytania. –
Nieważne :) zostało zrobione. –
Istnieje już pytanie na ten temat: [Przełącz kontra if-else] (http://stackoverflow.com/questions/97987/switch-vs-if-else) ** [EDYCJA] **
Jako "lc "W komentarzu do tej odpowiedzi, powyższe pytanie nie jest duplikatem, ale nadal może dać ci dobry pomysł na działanie i co używać, jeśli taka konkretna sytuacja ma miejsce. – RuudKok