A c# mért nem enged a swich szerkezetnél break hiányában átcsúszni egyik állapotból a másikba?
Enged, ha az elsőbe nem írsz semmit.
{
case 1:
case 2: //itt csinálsz valamit, ami 1-nél és 2-nél is végrehajtódik
break;
case 3:
break;
}
Így döntött a nyelv megalkotója.
Az alapprobléma a hiányzó break;-el az, hogy nem lehet róla megmondani, hogy szándékosan lett kihagyva vagy csak véletlenül.
Ha feltételezzük, hogy szándékosan és továbbengedjük, akkor lehet, hogy hibát okoz.
Ha feltételezzük, hogy véletlenül és megállítjuk, hát... akkor 50-50%, hogy hibát okoz, tehát ez sem jobb.
Akkor mit tételezzünk fel? - Ha megfigyeled, akkor üres case és hiányzó break; esetén viszont továbbmegy a vezérlés. - A feltételezés az volt, hogy ha valaki üresen hagyja a case-t és break;-et sem tesz ki, akkor az biztosan szándékosan van úgy, mert ez az üres case értelme, hogy továbbmenjen a vezérlés. Hiszen mi másért hagynál ott üresen egy case-t?
A C# ilyen, de úgy vettem észre, több más dologban is szigorúbb.
Egyébként szerintem tök veszélyes, ha egy nyelv engedi a break lehagyását.
Véletlenül lehagyja az ember, aztán hihetetlenül hosszú hibakeresés kezdődik.
Mert ez nem C++. ;)
Én szeretem a C-t és C++-t, nagyon sok trükköt be lehet vetni ezen nyelveknél, amik apróságok, de pl. beágyazott rendszereknél, vagy rendszerközeli szoftvereknél sokat jelenthet akár az is, ha egy-egy automatikusan végrehajtott művelettel kevesebb van.
De ez elég komoly hibákat is okozhat, és azért elég ritka, amikor az a kívánt működés, hogy egyszerre több switch-ág hajtódjon végre.
Igazából a legtöbb nyelvben nem lehet azt megoldani, mint C++-ban. A többirányú elágazásnak mindig csak egy ága hajtódhat végre. Így nézve nem a C# a különc, hanem pont a C++. ;)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!