Я просто наткнулся на проблему во время программирования, которая действительно выиграет от подобной структуры. Рассмотрим следующий пример:Gotolike структура/улучшено продолжение - goto всегда зло?
//tries to find a solution for a problem 3 times
//in this process copies elements from old to newList
foreach (var tryNbr in Util.range(0,3))
{
List<A> newList = new List<A>();
List<A> oldList = workList;
while(oldList.Count != 0)
{
List<A> possibleMatched = FINDWITHLINQSTUFF;
//try stuff out
if(possibleMatches.Count == 0)
break;
//do more stuff
}
if(oldList.Any())
{
workList = newList;
return true;
}
}
Так что проблема у меня здесь есть, что в моем время цикла, мне нужно проверить некоторое условие, и если это правда, я хочу продолжить со следующего итерация, так как мой весь предыдущий процесс тоже не работал.
Так как это может произойти из-за перерыва или продолжения соединения, мне нужно проверить дополнительное условие за моим пока что, которое довольно подвержено ошибкам, если я могу что-то изменить позже, не обращая внимания.
Есть contruct как
goto foreach;
или
continue foreach;
который продолжает со следующего внешнего цикла Еогеасп? ли это на самом деле быть жизнеспособным решением использовать Гото здесь (и увеличивающееся счетчик вручную
PS:? У вас есть лучшее решение для общей структуры настоящего Кодекса
Я не уверен, правильно ли я понял проблему, но один из способов сделать это - определить переменную bool someConditionMet = false; а затем вы установите значение true внутри цикла while и проверьте его значение вне цикла while. Возможно, решение Goto может быть решением, но оно обычно не рекомендуется по соображениям удобочитаемости и, возможно, вызывает причины стека (не уверен, что это так в C#). – Husain
@ Husain 'goto' вполне безопасен в C#. Читаемость ... может быть лучше с 'goto', чем с локальным. Конечно, это может сделать дальнейший рефакторинг сложнее - в частности, 'goto' не будет работать через методы (что хорошо). – Luaan
Эрик Липперт обсуждает достоинства того, является ли 'продолжение' самой лучше, чем' goto' в связанных Q & A, и moreso в своем блоге, связанном с этим ответом. –