Операнд_1 ? операнд_2 : операнд_3

Первый операнд — выражение, для которого существует неявное преобразованак логическому типу. Если результат вычисления первого операнда равен true, то

результатом условной операции будет значение второго операнда, иначе — третьего операнда. Вычисляется всегда либо второй операнд, либо третий. Их тип может различаться.

Тип результата операции зависит от типа второго и третьего операндов:

□ если операнды одного типа, он и становится типом результата операции (это наиболее часто используемый вариант применения тернарной операции);

□ иначе, если существует неявное преобразование типа от операнда 2 к операнду 3, но не наоборот, то типом результата операции становится тип операнда 3

□ иначе, если существует неявное преобразование типа от операнда 3 к операн­
ду 2, но не наоборот, то типом результата операции становится тип операнда 2;

□ иначе возникает ошибка компиляции.

Условную операцию часто используют вместо условного оператора if (он рас­сматривается в следующей главе) для сокращения текста программы.

Пример применения условной операции представлен в листинге 3.8.

Листинг 3.8. Условная операция

using System;

namespace ConsoleApplication1

{

class Class1l

{

static void Main()

{

int a = 11, b = 4;

int max = b > a? b: a;

Console.WriteLine(max); // Результат 11

}

}

}

Другой пример применения условной операции: требуется, чтобы некоторая це­лая величина увеличивалась на 1, если ее значение не превышает n, а иначе при­нимала значение 1. Это удобно реализовать следующим образом:

1 - (1 < n)? 1 + 1: 1;

Условная операция правоассоциативна, то есть выполняется справа налево. На­пример, выражение а? b: с? d: е вычисляется как а? b: (с? d: е).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: