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