Как использовать списки условий и циклы, чтобы избежать длинных повторяющихся операторов 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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