Урок 4. Вложенные тернарные операторы

Как и условные операторы if–else могут быть вложенными, так и тернарные операторы могут быть вложенными, но этим не следует злоупотреблять! Рассмотрим на следующем примере:

У пользователя есть координаты точки, ему нужно определить к какой четверти системы координат xy принадлежит точка. Координаты записываются в переменные x и y.

image

С этого следует, что если:

  • х > 0, у > 0 – точка принадлежит I четверти
  • х > 0, у < 0 – точка принадлежит IV четверти
  • х < 0, у > 0 – точка принадлежит II четверти
  • х < 0, у < 0 – точка принадлежит III четверти

Решение с использованием вложенных тернарных операторов:

int x = 10, y = -5;  

string quadrant = (x > 0) ? ((y > 0) ? "I четверть" : "IV четверть ") : ((y > 0) ? "II четверть " : "III четверть ");

// или это так же можно записать так:

quadrant = x > 0 ? (y > 0 ? "I четверть " : "IV четверть ") : (y > 0 ? "II четверть " : "III четверть ");

// ... или вообще, вот так

quadrant = x > 0 ? y > 0 ? "I четверть " : "IV четверть " : y > 0 ? "II четверть " : "III четверть ";

Как видно из данного примера чтение кода при использовании вложенных тернарных операторов ухудшается, поэтому такое их использование не рекомендуется.
Решение данной задачи с использованием вложенных if–else:

int x = 10, y = -5;  

string quadrant;

if (x > 0)
{
    if (y > 0)
    {
        quadrant = "I квадрант";
    }
    else
    {
        quadrant = "IV квадрант";
    }
}
else
{
    if (y > 0)
    {
        quadrant = "II квадрант";
    }
    else
    {
        quadrant = "III квадрант";
    }
}

Источник: видеоурок Александра Шевчука "ВИДЕОУРОК №4. УСЛОВНЫЕ КОНСТРУКЦИИ"

%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%202 предыдущая статья | следующая статья %D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%202