Тернарный оператор ?:. Примеры использования
Содержание
- 1. Назначение оператора ?:. Общая форма
- 2. Примеры использования тернарного оператора ?:
- 3. Может ли оператор ?: быть вложенным?
- Связанные темы
Поиск на других ресурсах:
1. Назначение оператора ?:. Общая форма
Для реализации выполнения действий в зависимости от условия используется оператор ?:. Это единственный тернарный оператор в языке C#. Для своего выполнения он требует трех операндов.
Общая форма оператора ?:
Условие ? Выражение1 : Выражение2
где
- Условие – условное выражение, которое может принимать одно из двух значений: true или false;
- Выражение1 – некоторое выражение, которое нужно выполнить в случае, если значение Условие = true;
- Выражение2 – выражение, которое нужно выполнить если Условие не выполняется (Условие = false).
⇑
2. Примеры использования тернарного оператора ?:
Пример 1. Определить максимальное значение между двумя числами. Текст приложения типа Console Application следующий.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp8 { class Program { static void Main(string[] args) { double x, y; double max; // 1. Ввод данных Console.Write("x = "); x = Convert.ToDouble(Console.ReadLine()); Console.Write("y = "); y = Convert.ToDouble(Console.ReadLine()); // 2. Определение максимального значения // с помощью тернарного оператора ?: max = x > y ? x : y; // 3. Вывод результата Console.WriteLine("Maximum = {0:f4}", max); Console.ReadKey(); } } }
Пример 2. Даны радиус окружности и сторона квадрата. Вычислить площадь каждой фигуры и вывести значение максимальной площади.
Решение задачи для приложения созданного по шаблону Console Application:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp8 { class Program { static void Main(string[] args) { double radius, side; // радиус окружности и длина стороны квадрата double sCircle, sRect; // площадь окружности и квадрата double maxSquare; // 1. Ввод данных Console.Write("Input radius of a circle: "); radius = Convert.ToDouble(Console.ReadLine()); Console.Write("Input side of a rectangle: "); side = Convert.ToDouble(Console.ReadLine()); // 2. Вычислить площадь окружности и квадрата sCircle = Math.PI * radius * radius; sRect = side * side; // 3. Вычислить максимальное значение из двух площадей // с помощью тернарного оператора ?: maxSquare = sCircle > sRect ? sCircle : sRect; // 3. Вывод результата Console.WriteLine("Square of a circle = {0:f3}", sCircle); Console.WriteLine("Square of the rectangle = {0:f3}", sRect); Console.WriteLine("Maximum = {0:f3}", maxSquare); Console.ReadKey(); } } }
Результат работы программы
Input radius of a circle: 2.5 Input side of a rectangle: 3.8 Square of a circle = 19.635 Square of the rectangle = 14.440 Maximum = 19.635
⇑
3. Может ли оператор ?: быть вложенным?
Да. Оператор ?: может иметь произвольное количество вложений.
Пример. С помощью вложенного оператора ?: вычисляется максимальное значение из трех чисел a, b, c. Числа вводятся с клавиатуры. Приложение типа Console Application.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp8 { class Program { static void Main(string[] args) { int a, b, c; int max; // 1. Ввод значений a, b, c Console.Write("a = "); a = Convert.ToInt32(Console.ReadLine()); Console.Write("b = "); b = Convert.ToInt32(Console.ReadLine()); Console.Write("c = "); c = Convert.ToInt32(Console.ReadLine()); // 2. Вычисление максимального значения из трех чисел max = a > b ? a > c ? a : c : b > c ? b : c; // 3. Вывод результата Console.WriteLine("Maximum = {0}", max); Console.ReadKey(); } } }
Результат выполнения программы
a = 5 b = 3 c = 8 Maximum = 8
⇑
Связанные темы
- Оператор условного перехода if. Полная и сокращенная формы. Конструкция if-else-if
- Оператор выбора switch. Вложенные операторы switch
⇑