Перейдите и выполните оператор else из оператора if C#

#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 только условие.