Mikor melyik szerkezetet kell használni?
Switch VS if
Illetve jól látom, hogy switch csak a C# nyelvben van?
Az "if" egy vagy több logikai feltétel (-ek sorozata), a "switch" pedig egyetlen értékre kiterjedő vizsgálat. Nincs olyan, hogy "kell", mindig kontextusfüggő, hogy épp melyiket szeretnéd használni, de általában azt, amelyikkel könnyebben ki tudod fejezni, hogy mi a célod.
Ha például egyetlen feltétel fennállását szeretnéd vizsgálni, tehát egy adott értékkészletből egyetlen érték egyezését vizsgálod, akkor nagy valószínűséggel "if"-et fogsz használni, míg ha egy adott értékkészletből több érték vizsgálatát óhajtod, akkor valószínűleg "switch"-et fogsz használni.
"Illetve jól látom, hogy switch csak a C# nyelvben van?"
Nem, kb. az összes létező, általános célú, OOP-t és/vagy procedurális programozást támogató nyelvben van.
"A switch gyorsabb tud lenni,"
Dehogy tud. Hogy is tudna?
Wheels: A switch egy vezérlési szerkezet, éppen olyan, mint az "if/then/else". Kifejezés meg aztán, tényleg sose volt.
Ha kigeneráltatod egy switch assembly kódját, tapasztalni fogod, hogy éppen annyi lesz, mintha "if"-ekből építenéd fel ugyanazt.
Kizárólag a programozói oldalt segítő eszköz a switch/case. A használatával futásidő szempontjából semmiféle előny nem keletkezik.
#6-os és ez már nem aktuális ? Nem teszteltem és szerintem programnyelv függő is lehet..
"If a switch contains more than five items, it's implemented using a lookup table or a hash list. This means that all items get the same access time, compared to a list of if:s where the last item takes much more time to reach as it has to evaluate every previous condition first."
De az is igaz, hogy olyan teszt is van, ami a switch-t hozza ki lassabbra.
A kérdező felé:
Switch-et akkor érdemes használni, ha a valamivel összehasonlítani kivánt adat esetében a "valami" (case) kettőnél többet számlál. Pl.:
adat: today
case: "hétfő", "kedd", "szerda", stb.
Na, elolvastam az ezzel kapcsolatos diskurzust. Ez sztem egy félig gondolt gondolat. Hash ide vagy oda, teoretice, nincs különbség.
De azért jó élmény volt. Köszi.
A végén még rászokok a stackoverflow olvasgatására.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!