Условнитеконструкции if и if-else представляват тип условен контрол, чрез който програмата може да се държи различно, в зависимост от някакво условие, което се проверява по време на изпълнение на конструкцията.
Условна конструкция if Основният формат на условната конструкция if е следният:
Форматът включва: if-клауза, булев израз и тяло на условната конструкция.
Булевият израз може да бъде променлива от булев тип или булев логически израз. Булевият израз не може да бъде цяло число (за разлика от други езици за програмиране като C и C++).
Тялото на конструкцията е онази част, заключена между големите къдрави скоби: {}. То може да се състои от един или няколко операции (statements). Когато се състои от няколко операции, говорим за съставен блоков оператор, т.е. поредица от команди, следващи една след друга, заградени във фигурни скоби.
Изразът в скобите след ключовата дума if трябва да бива изчислен до булева стойност true или false. Ако изразът бъде изчислен до стойност true, тогава се изпълнява тялото на условната конструкция. Ако резултатът от изчислението на булевия израз е false, то операторите в тялото няма да бъдат изпълнени.
Конструкцията if и къдравите скоби При наличието на само един оператор в тялото на if-конструкцията, къдравите скоби, обозначаващи тялото на условния оператор могат да бъдат изпуснати, както е показано по-долу. Добра практика е, обаче те да бъдат поставяни, дори при наличието на само един оператор. Целта е програмният код да бъде по-четим.
Ето един пример, в който изпускането на къдравите скоби води до объркване:
int a = 6;
if (a > 5)
Console.WriteLine("Променливата а е по-голяма от 5.");
Console.WriteLine("Този код винаги ще се изпълни!");
// Bad practice: unreadable code
В горния пример кодът е форматиран заблуждаващо и създава впечатление, че и двете печатания по конзолата се отнасят за тялото на if блока, а всъщност това е вярно само за първия от тях.
Конструкцията switch-case избира измежду части от програмен код на базата на изчислената стойност на определен израз (най-често целочислен). Форматът на конструкцията за избор на вариант е следният:
switch (селектор)
{
case целочислена-стойност-1: конструкция; break;
case целочислена-стойност-2: конструкция; break;
case целочислена-стойност-3: конструкция; break;
case целочислена-стойност-4: конструкция; break;
// …
default: конструкция; break;
Селекторът е израз, връщащ като резултат някаква стойност, която може да бъде сравнявана, например число или string. Операторът switch сравнява резултата от селектора с всяка една стойност от изброените в тялото на switch конструкцията в case етикетите. Ако се открие съвпадение с някой case етикет, се изпълнява съответната конструкция (проста или съставна). Ако не се открие съвпадение, се изпълнява default конструкцията (когато има такава). Стойността на селектора трябва задължително да бъде изчислена преди да се сравнява със стойностите вътре в switch конструкцията. Етикетите не трябва да имат една и съща стойност.
Както се вижда, че в горната дефиниция всеки case завършва с оператора break, което води до преход към края на тялото на switch конструкцията. C# компилаторът задължително изисква да се пише break в края на всяка case-секция, която съдържа някакъв код. Ако след дадена case-конструкция липсва програмен код, break може да бъде пропуснат и тогава изпълнението преминава към следващата case-конструкция и т.н. до срещането на оператор break. След default конструкцията, break е задължителен.
Не е задължително default конструкцията да е на последно място, но е препоръчително да се постави накрая, а не в средата на switch конструкцията.