Это скорее гипотетический вопрос, так как я все больше использую .NET 3.5 вместе с лямбда-выражениями и анонимными делегатами. Возьмите этот простой пример:
static void Main(string[] args)
{
List<int> numList = new List<int>(int[] { 1, 3, 5, 7, 9, 11, 12, 13, 15 });
numList.ForEach(i =>
{
if (i % 2 == 1)
Console.Write(i);
else
return;
});
Console.ReadLine();
}
Это даст результат:
13579111315
Конечно, что я действительно хотел бы сделать, это прекратить выполнение функции ForEach после 12, а не печатать 13 или 15. В традиционной конструкции foreach у вас будет разрыв (вместо возврата в моем пример), и цикл закончится. Однако перерыв в этом случае незаконен. Вы получите следующее сообщение:
Нет замкнутого контура, из которого можно разорвать или продолжить
Существует ли конструкция, которую я мог бы легко использовать здесь, чтобы получить желаемый результат, или просто лучше использовать стандартный цикл foreach в этом случае, если вы не собираетесь на самом деле запускать желаемый код на каждом элементе список