Вы можете использовать break
, чтобы выйти из цикла или переключателя, но вы не можете выйти из простого блока, подобного этому.
Есть способы достичь этого, например, используя goto
или искусственный цикл while
, но это определенно звучит как запах кода.
Вы можете достичь того, что хотите, используя простое условие , которое сделает ваше намерение намного более ясным.
Вместо:
DoSomething();
if (a == 1) // conditional break
{
break;
}
DoSomethingElse();
break; // unconditional break (why though)
UnreachableCode(); // will generate compiler warning, by the way
Вы можете сделать:
DoSomething();
if (a != 1) // simple condition
{
DoSomethingElse();
if (false) // why though
{
UnreachableCode(); // will generate compiler warning, by the way
}
}
В качестве альтернативы, вы можете извлечь эту часть в отдельный именованный метод и выполнить короткое замыкание с помощью return
заявления. Иногда это действительно делает код более читабельным, особенно если у вас есть возвращаемое значение:
private void a()
{
// do stuff here
MeaningfulNameToDescribeWhatYouDo();
// do stuff here
}
private void MeaningfulNameToDescribeWhatYouDo()
{
// do more stuff here
if (condition)
{
return; //<-- jump out of this scope here!!
}
// this further code should not be executed
}