Тернарный оператор
Тернарный оператор (?) относится к числу самых примечательных в C#. Он представляет собой условный оператор и часто используется вместо определенных видов конструкций if-then-else. Ниже приведена общая форма этого оператора:
Выражение1 ? Выражение2 : ВыражениеЗ;
Здесь Выражение1 должно относиться к типу bool а Выражение2 и ВыражениеЗ — к одному и тому же типу. Обратите внимание на применение двоеточия и его местоположение в операторе ?. Значение выражения ? определяется следующим образом. Сначала вычисляется Выражение1. Если оно истинно, то вычисляется Выражение2, а полученный результат определяет значение всего выражения ? в целом. Если же Выражение1 оказывается ложным, то вычисляется ВыражениеЗ, и его значение становится общим для всего выражения ?:
int b, c; c = -4; b = c >= 0 ? c : c*c; // b = 16
Присваивать переменной результат выполнения оператора ? совсем не обязательно. Например, значение, которое дает оператор ?, можно использовать в качестве аргумента при вызове метода. А если все выражения в операторе ? относятся к типу bool, то такой оператор может заменить собой условное выражение в цикле или операторе if. Давайте рассмотрим пример использования тернарного оператора:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int result; // Реализуем функцию модуля числа for (int i = 5; i >= -5; i--) { result = i >= 0 ? i : -i; Console.Write("{0}\t", result); } Console.WriteLine("\n\n"); // Выбор четных чисел for (int i = 0; i < 10; i++) { if (i % 2 == 0 ? true : false) Console.Write("{0}\t",i); } Console.ReadLine(); } } }
Комментарии