Ha valamilyen feltételtől függően a programnak több lehetséges, egymástól különböző lefutása van, akkor úgy nevezett elágazást kell használnunk.
Vegyük a következő példát:
Console.WriteLine("A");
Console.WriteLine("B");
if (num == 5) // Ha igaz, hogy "num" változó értéke 5, ...
{
Console.WriteLine("C"); // ... végrehajtódik a kapcsos zárójelek közti részt.
Console.WriteLine("D");
}
Console.WriteLine("E");
Console.WriteLine("F");
// Unityben Debug.Log)A példában bemutatott kód a megszokott módon fentről lefelé fut. Ám az if elágazásban lévő rész csak akkor fut le, ha num értéke 5. Ebben az esetben az A, B C, D, E és F is kiírásra kerül.
Ezzel szemben ha num érték mondjuk 6, akkor csak az A, B, E és F kerül kiírásra.
Egyágú elégazás: if szerkezet
If elágazáshoz mindig kell zárójelek közt egy feltételt megadni. Ez a feltétel mindig egy bool típusú kifejezés. A fenti elágazást tehát leírhatnánk így is:
bool condition = num == 5;
if (condition) { ... }A fenti esetben egyágú elágazásról beszélünk. Ebben az esetben egy feltételtől függően vagy végrehajtunk egy kódrészletet vagy átugorjuk.
Kétágú elégazás: if-else szerkezet
Írhatunk kétágú elágazást is, ami esetében mindkét lehetőség (true/ false) esetén végrehajtóik egy kódrészlet, ami a másik ágban nem fut le.
bool isEven = num % 2 == 0; //"num" páros-e?
if (isEven) // Ha num páros
{
Console.WriteLine("Even"); // Akkor kiírjuk az "Even" (páros) szót.
}
else // Különban
{
Console.WriteLine("Odd"); // Kiírjuk az "Odd" (páratlan) szót.
}
// Unityben Debug.Log() paranccsal tudnánk kiírni a konzolra.Többágú elágazás: else-if szerkezet
Az if és else ágakat sorba lehet fűzni. Ezt nevezzük else-if szerkezetnek. Az alábbi szerkezetben egy háromágú elágazást írok.
Ha csak egy utasítást hajtunk végre egy ágon belül a kapcsos zárójeleket elhagyhatjuk. Ezzel kevesebb sorból írhatjuk le ugyanazt.
A lenti példában egy 5 ágú elágazás írtam le zárójelek nélkül.
Létezik egy másik módja a többágú elágazásnak, a switch. Ezt itt most nem tanuljuk, de hosszabb távon érdemes lehet utánanézni.
Gyakran csak arra kell nekünk egy elágazás, hogy feltételtől függően értéket adjunk egy változónak. Ebben az esetben van egy egyszerűsített forma is.
Többágú elágazás másként: a switch szerkezet:
A switch egy alternatív formája a többágú elágazásnak, amikor nem bool típusú kifejezésektől, hanem egy változó különböző lehetséges értékeitől függ, hogy melyik szálat hajtjuk végre.
A feltételes értékadás operátor
Nézzük a következő példát:
string text;
if (num % 2 == 0) // Ha num páros,
text ="Even"; // text értéke legyen "Even" (páros).
else // Különben,
text = "Odd" // text értéke legyen "Odd" (páratlan).Mindez egy sorban is kifejezhető a feltételes értékadás operátorral: ?:
string text = num % 2 == 0 ? "Even" : "Odd";
// típus változónév = feltétel ? érték, ha a feltétel igaz : érték, ha nem igaz