Разгранате структуре
Слично као и у програмском језику C, у програмском језику C# уочићеш линијске, разгранате и цикличне програмске структуре. Синтакса наредби које се користе у разгранатим структурама је иста, али се вредности управљачких израза разликују.
Наредба гранања
Наредбу гранања if можеш да користиш без else дела:
У програмском језику C# izraz представља Буловски логички израз који може да има вредност true или false, а не број различит од нуле или нула као у програмском језику C! Ако је вредност израза true, извршава се naredba која може бити појединачна наредба или блок наредби између витичастих заграда. У следећем примеру...
...у конзоли ће се исписати Hello, World!, јер вредност Буловског израза 1 < 2 износи true, док се у следећем...
...неће исписати ништа јер вредност Буловског израза 2 < 1 износи false. У датим примерима извршава се само једна наредба у оквиру if блока, па се витичасте заграде могу изоставити, мада се то ређе ради међу C# програмерима.
Наредбу гранања if можеш да користиш и са else делом...
...где izraz опет представља Буловски логички израз који може да има вредност true или false. Ако је вредност израза true, извршава се naredba_1, а ако је false извршава се naredba_2, при чему naredba_1 и naredba_2 могу бити појединачне наредбе или блокови наредби између витичастих заграда. У следећем примеру...
...у конзоли ће се исписати Hello, World! јер вредност Буловског израза 1 < 2 износи true, док ће се у следећем...
...исписати World, Hello!, јер вредност Буловског израза 2 < 1 износи false.
Исто као и у програмском језику C, if или if-else структура може у себи садржати једну или више угнежђених if или if-else структура. Иако увлачење, односно назубљивање кода (енгл. indentation) има само естетску улогу, добра пракса је да увек треба да увлачиш блок наредби if и else грана са истим размаком за увлачење (обично четири празнине или један табулатор). Дозвољено је да користиш и else-if запис, ако ће то побољшати читљивост кода.
Тернарни условни оператор
Општи облик наредбе са тернарним условним оператором изгледа овако:
Ако вредност izraz_1 износи true, извршиће се izraz_2, односно, ако износи false извршиће се izraz_3. У следећем примеру...
...у конзоли ће се исписати "Hello, World!" јер израз 1 < 2 има вредност true, док ће се у следећем...
...исписати World, Hello!, јер израз 2 < 1 има вредност false.
Наредба вишеструког гранања
Слично као у програмском језику C, наредба вишеструког гранања switch-case у програмском језику C# доприноси читљивости програма у којем се појављује вишеструко гранање. Ограничење које је постојало у програмском језику C, да израз у загради наредбе switch мора бити целобројног типа, у програмском језику C# не постоји. Општи облик наредбе вишеструког гранања може се представити овако...
switch(izraz)
{
case konstanta_1:
naredba_1
break;
case konstanta_2:
naredba_2
break;
// ...
default:
naredba_n
break;
}
...где naredbа_1, naredbа_2 … naredba_n могу бити или појединачне наредбе или блокови наредби. Не могу постојати две case гране са истом константом. Прво се израчунава вредност izraz и проналази се грана чија је вредност константе једнака тој вредности. Уколико се пронађе таква грана, извршава се блок наредби почевши од те гране па до краја switch наредбе. Ако се вредност израза не поклапа ни са једном константом, онда се извршава блок наредби у default грани, уколико она постоји. Најчешће је потребно да се изврши само једна грана и тада се користи наредба break. Ако се наредба break наведе на крају блока наредби у грани, прескаче се извршавање свих осталих грана до краја switch наредбе.
У следећем примеру...
switch (izraz)
{
case 4.5:
Console.WriteLine("Jednako");
break;
case 4.4:
case 4.6:
Console.WriteLine("Blizu");
break;
default:
Console.WriteLine("Pogresno");
break;
}
...испитује се једнакост реалне вредности izraz са константама у case гранама. Ако је вредност једнака са 4.5, у конзоли ће се исписати Jednako, ако је једнака са 4.4 или 4.6 у конзоли ће се исписати Blizu, а за све остале реалне вредности исписаће се Pogresno.