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);
Выглядит монструозно, но зато в одну строку.