Как использовать списки условий и циклы, чтобы избежать длинных повторяющихся операторов if-elseC#

Место общения программистов C#
Anonymous
Как использовать списки условий и циклы, чтобы избежать длинных повторяющихся операторов if-else

Сообщение Anonymous »

Как я могу использовать условные списки в C# с небольшим циклом, чтобы избежать длинных повторяющихся операторов блока if-else?
Очень легко написать кучу операторов if-else для множества различных условий, которые имеют повторяющееся действие, но с небольшим количеством разных значений переменной для установки.
Рассмотрим этот пример:

Код: Выделить всё

if (condition1 == 0 || condition2 == 0)
{
variable1 = 1;
variable2 = 100;
Reason = "Status is this";
}
else if (condition3 == 1 || condition4 == 100)
{
variable1 = 1;
variable2 = 100;
Reason = "Status is something else";
}
else if (condition5 == 2 || condition6 == 10)
{
variable1 = 1;
variable2 = 100;
Reason = "Status is more";
}
Представьте, что становится необходимым больше условий, и вы просто добавляете еще больше else - if с аналогичными действиями, за исключением того, что одна переменная устанавливается уникально.
Как написать это оптимизированно, чтобы код выглядел сжатым (легко читаемым), а добавление дополнительных условий - это просто добавление одной строки?
Мое предложение следующее:

Код: Выделить всё

var ConditionsList - new List
{
(condition1 == 0 || condition2 == 0, "Status is this"),
(condition3 == 1 || condition4 == 100, "Status is something else"),
(condition5 == 2 || condition6 == 10, "Status is more")
};
foreach (var condition in ConditionsList)
{
if(condition.Condition)
{
variable1 = 1;
variable2 = 100;
Reason = condition.Reason;
break; //optional
}
}
Раскрытие условий — это просто добавление еще одной строки в список условий. Кроме того, можно добавить в список другие переменные, если они имеют уникальные или разные значения. Код занимает не так много места, поэтому его легче читать и просматривать за один раз.
После того, как я один раз реализовал это в своем коде, я был удивлен, обнаружив, что его можно применять во многих местах с некоторыми вариациями.
Есть ли лучший способ решить эту проблему или нет?

Подробнее здесь: https://stackoverflow.com/questions/788 ... statements

Вернуться в «C#»