control structures switch case C#

Подскажите как правильно сравнить 2 переменные?

z = x-y;
switch (z)
{
case z < 0:
    F = Math.Sin(x) + Math.Cos(y) * Math.Cos(y);
    break;
case z == 0:
    F = Math.Log(x);
    break;
case z > 0:
    F = Math.Sin(x) * Math.Sin(x) + Math.Cos(y);
    break;
 }

Ответы (1 шт):

Автор решения: aepot

Для .NET 5 с минимальными изменениями код будет выглядеть вот так:

switch (z)
{
    case < 0:
        F = Math.Sin(x) + Math.Cos(y) * Math.Cos(y);
        break;
    case 0:
        F = Math.Log(x);
        break;
    case > 0:
        F = Math.Sin(x) * Math.Sin(x) + Math.Cos(y);
        break;
}

Либо более современная конструкция, рекомендуется

F = z switch
{
    < 0 => Math.Sin(x) + Math.Cos(y) * Math.Cos(y),
    0 => Math.Log(x),
    > 0 => Math.Sin(x) * Math.Sin(x) + Math.Cos(y)
};

А если версия дотнета ниже, то обычный if-else

if (z < 0)
    F = Math.Sin(x) + Math.Cos(y) * Math.Cos(y);
else if (z == 0)
    Math.Log(x);
else
    F = Math.Sin(x) * Math.Sin(x) + Math.Cos(y);

Или даже тернарный оператор

F = z < 0 ? Math.Sin(x) + Math.Cos(y) * Math.Cos(y) : z == 0 ? Math.Log(x) : Math.Sin(x) * Math.Sin(x) + Math.Cos(y);

Выглядит монструозно, но зато в одну строку.

→ Ссылка