Перейти до основного вмісту

Умовні вирази

Окремим набором операцій є умовні вирази. Такі операції повертають логічне значення, тобто значення типу bool: true, якщо вираз істинний, і false, якщо вираз хибний. До таких операцій належать операції порівняння та логічні операції.

Операції порівняння

Операції порівняння порівнюють два операнди і повертають значення типу bool: true, якщо вираз істинний, і false, якщо вираз хибний.

  • ==

Порівнює два операнди на рівність. Якщо вони рівні, операція повертає true, якщо не рівні - false:

int a = 10
int b = 4;
bool c = a == b; // false
  • !=

Порівнює два операнди і повертає true, якщо операнди не рівні, і false, якщо рівні.

int a = 10;
int b = 4;
bool c = a != b; // true
bool d = a !=10; // false
  • <

Операція «менше ніж». Повертає true, якщо перший операнд менше другого, і false, якщо перший операнд більше другого:

int a = 10
int b = 4
bool c = a < b; // false
  • >

Операція «більше ніж». Порівнює два операнди і повертає true, якщо перший операнд більший за другий, інакше повертає false:

int a = 10
int b = 4;
bool c = a > b; // true
bool d = a > 25; // false
  • <=

Операція «менше або дорівнює». Порівнює два операнди і повертає true, якщо перший операнд менше або дорівнює другому. В іншому випадку повертає false.

int a = 10;
int b = 4
bool c = a <= b; // false
bool d = a <= 25; // true
  • >=

Операція «більше або дорівнює». Порівнює два операнди і повертає true, якщо перший операнд більше або дорівнює другому, інакше повертає false:

int a = 10
int b = 4;
bool c = a >= b; // true
bool d = a >= 25; // false

Операції <, > <=, >= мають вищий пріоритет ніж == та !=.

Логічні операції

У мові C# також визначені логічні операції, які також повертають значення типу bool. Вони приймають значення типу bool як операнди. Зазвичай вони застосовуються до відношень і поєднують в собі декілька операцій порівняння.

  • |

Операція логічного додавання або логічного АБО. Повертає значення true, якщо хоча б один з операндів повертає true.

bool x1 = (5 > 6) | (4 < 6); // 5 > 6 - false, 4 < 6 - true, тому повертає true
bool x2 = (5 > 6) | (4 > 6); // 5 > 6 є хибним, 4 > 6 є хибним, тому повертається false.
  • &

Операція логічного множення або логічне І. Повертає true, якщо обидва операнди одночасно істинні.

bool x1 = (5 > 6) & (4 < 6); // 5 > 6 - false, 4 < 6 - true, тому повертає false
bool x2 = (5 < 6) & (4 < 6); // 5 < 6 істина, 4 < 6 істина, тому повертається true.
  • ||

Операція логічного додавання. Повертає true, якщо хоча б один з операндів повертає true.

bool x1 = (5 > 6) || (4 < 6); // 5 > 6 - false, 4 < 6 - true, тому повертає true
bool x2 = (5 > 6) || (4 > 6); // 5 > 6 є хибним, 4 > 6 є хибним, тому повертається false.
  • &&

Операція логічного множення. Повертає true, якщо обидва операнди одночасно істинні.

bool x1 = (5 > 6) && (4 < 6); // 5 > 6 - false, 4 < 6 - true, тому повертає false
bool x2 = (5 < 6) && (4 < 6); // 5 < 6 істина, 4 < 6 істина, тому повертається true
  • !

Операція логічного заперечення. Виконується з одним операндом і повертає true, якщо операнд є false. Якщо операнд рівний true, операція повертає false:

bool a = true;
bool b = !a; // false
  • ^

Виключна операція АБО. Повертає true, якщо перший або другий операнд (але не одночасно) є true, інакше повертає false

bool x5 = (5 > 6) ^ (4 < 6); // 5 > 6 - false, 4 < 6 - true, тому повертається true
bool x6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - істина, 4/2 < 3 - істина, тому повертається false.

s Тут ми маємо дві пари операцій | і || (а також & і &&), які виконують схожі дії, але вони не є еквівалентними.

У виразі z=x|y; будуть обчислені значення як x, так і y.

У виразі z=x||y; спочатку буде обчислено значення x, і якщо воно істинне, то обчислення значення y не має сенсу, тому що ми вже маємо z, рівне істині в будь-якому випадку. Значення y буде обчислено лише у випадку, якщо x є хибним

Те ж саме стосується і пари операцій &/&&. У виразі z=x&y; будуть обчислені обидва значення - і x, і y.

У виразі z=x&&&y; спочатку буде обчислено значення x, і якщо воно дорівнює false, то обчислення значення y не має сенсу, тому що у нас все одно z дорівнює false. Значення y буде обчислено тільки в тому випадку, якщо x дорівнює true

Саме тому операції ||| та && є більш зручними в обчисленнях, оскільки вони зменшують час, необхідний для обчислення значення виразу, а отже, підвищують продуктивність. Операції || та && більше підходять для виконання побітових операцій над числами.