Az X++ programozási nyelv

Utasítások, vezérlési szerkezetek

Utasítások, vezérlési szerkezetek

A vezérlési szerkezetek - blokkok, elágazások, ciklusok - szintaktikája megegyezik a C++-ban, illetve a C#-ban  megszokottakkal. A feltételek típusa boolean, nem pedig integer. Feltétel nélküli vezérlésáttadó utasítás nincs a nyelvben.

Értékadás, üres utasítás Mint C++ -ban. Az utasítás végét mindíg pontosvesszővel kell lezárni.Több utasítás lehet egy soron belül.

Szekvencia utasítások egymástól ";" -vel elválasztva.

Elágazás

if (feltétel) { utasítas1; } else { utítás2; }

Egy utasítás esetén nem kötelező kitenni a kapcsos zárójeleket. Egyszerű feltétel teljesülés esetén végrehajtandó ág leírható "else" nélkül is. A feltétel tetszőlegesen összetett logikai feltétel lehet. A nyelvben nincs elseif kifejezés, helyette használható ez az alak:
else if(feltétel1) { utasítások1; } else if(feltétel2) { utasítások2; }

Lényegében itt egymásba ágyazott elágazásokról van szó.
switch (kifejezés) { case konstans_kif1: { utasítások1; break; } case konstans_kif2: { utasítások2; break; } case konstans_kif3: { utasítások3; break; } default: { utasítások4; break; } }

A switch szerkezettel többszörös elágazás valósítható meg. A kifejezés típusa numerikus, string, esetleg enum típusú lehet. A futás ahhoz a case blokkhoz kerül, ahol a kifejezés megegyezik a megadott konstans kifejezéssel. A blokk végrehajtása végén található break; utasítás meggátolja a következő blokk végrehajtását.

For ciklus

for([init_rész],[kifejezés],[léptetés]) { utasítás/blokk; }

A for utasítás a ciklus megvalósításának egy lehetséges módja. Az inicialízációs részben kell a változót kezdeti értékre állítani. A ciklus addig tart, amíg a kifejezés értéke hamis nem lesz. Futtatási sorrend: init_rész, kifejezés kiértékelés, ha igaz akkor végrehajtásra kerül az utasítás blokk, majd a léptetés, és végül a kifejezés kiértékelésétől függő ismétlés történik.

Abban az esetben, ha egy enumerálható listának a bejárására van szükség, akkor használható az enumerator, mely alkalmazása igen közel áll más nyelvekben megszokott forEach utasításhoz. A ciklusmagban található egy kitüntetett szerepű változó, mely mindíg az aktuális elemet tartalmazza. Ez a változó nem módosítható illetve nem adható át ref, valamint out paraméterként. Első lépésként meghívásra kerül a végigjárandó osztály GetEnumator() függvénye, ami visszaad egy bejárót. Például:
Enumerator e = list.GetEnumerator(); A visszakapott bejáró felhasználásával pedig végigiterálható a kollekció. while(e.MoveNext()) { object obj = e.Current; DoSomething(obj); }

while(feltétel) { utasítások }

A while utasítással lehet az elől tesztelő ciklust megvalósítani. Hasonlóan a for ciklushoz, ha nem igaz a feltétel, akkor többet már nem fut le a ciklusmag. A while konstrukció hátultesztelős formája a "do-while" egyszer mindenképp lefut.

VezérlésVezérlésátadó utasítások, sem pedig erőforrást felszabadító utasítások nem találhatóak a nyelvben.
Kivétel kezelő szerkezet Try - Catch alkalmazásával
Azon kódrészletek "megfigyelésére" és "hibakezelésére" való, melyekben Exception léphet fel.

try { utasítások; } catch( típus [név] ) { }

Több Catch() ág lehet, ezeknek az elkapni kívánt kivétel típusában kell különbözniük. A más nyelvekbe megszokott finally rész hiányzik a nyelvből.

A feltétel nélküli vezérlésáttadó utasítás "goto" hiányzik a nyelv eszközkészletéből.