#c# #if-statement #conditional-statements
Вопрос:
Ниже приведены операторы условий if-else, которые я использую. Я думал удалить дублирование кода внутри //Операторов 2
if (true)
{
List<string> usersList=getUsersList();
if(usersList.Length > 0){
//Statements 1
..............
}
else{
//Statements 2
.............
}
}
else
{
//Statements 2
.............
}
В приведенном выше коде необходимо повторить операторы 2. Есть ли способ отправить выполнение в основной цикл else.
Ответ №1:
Может быть, что-то вроде этого?
bool runSecondBlock = !firstCondition;
if (firstCondition)
{
List<string> usersList=getUsersList();
if(usersList.Length > 0){
//Statements 1
..............
}
else {
runSecondBlock = true;
}
}
if (runSecondBlock)
{
//Statements 2
.............
}
Комментарии:
1. Это можно было бы сделать с некоторыми комментариями, но это мой предпочтительный выбор, хотя мы могли бы использовать анонимных делегатов или действия, использование преднамеренных флагов в сложной логике выбора делает код очень простым в тестировании и обслуживании. Даже оставляет много места для документации.
Ответ №2:
Для этого вы можете использовать условный логический операторamp;amp;, но будьте осторожны, если ваше дерево решений станет более сложным, оно может довольно быстро запутаться.
if (condition1 amp;amp; condition2) //both need to be "true" to execute statements 1
{
//Statements 1
}
else
{
//Statements 2
}
Комментарии:
1. Спасибо тебе, @Стефан. создание условия2 как внешней функции для придания исключенного значения. Но неспособность выполнить это всегда должна выполняться на основе условия1. Есть ли какой-либо способ использовать GO TO.
2. Да, вы можете это сделать. Я могу обновить пример, но мне нужны имена, которые вы используете. В своем вопросе вы используете
true
только условие.