C#. Тернарний оператор ?:. Приклади використання

Тернарний оператор ?:. Приклади використання


Зміст


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

 


Зв’язані теми