Тернарный оператор

81

Тернарный оператор (?) относится к числу самых примечательных в 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();
        }
    }
}
Использование тернарного оператора
Пройди тесты
Лучший чат для C# программистов