Риск быть урезанным за то, что он "выходит за рамки вопроса", я собираюсь спросить, что это за ОП, которую действительно пытается выполнить.
Код, о котором идет речь, пытается определить, существует ли целое число (1) где-либо в списке. Но мне кажется ясным, что приведенный выше код является просто демонстрацией, а не реальной проблемой.
Использование «ForEach» для итерации по списку, чтобы определить, есть ли что-то в списке, является неправильным способом сделать это. Вместо этого лучше использовать одну из множества функций «Найти».
Например, вместе с исходным кодом ОП:
j = intList.Find(i => i.Equals(1));
Это будет в точности то же самое, что и предложенный выше код. Он будет перебирать список (и, если возможно), возвращать значение, совпадающее с лямбда-выражением, в «j» и прерываться раньше.
intList.Exists(i => i.Equals(1));
эффективно сделает то же самое. Он будет перебирать список и возвращать значение ИСТИНА, если сможет найти, существует ли 1, и рано ли "сломаться". (иначе он перебирает весь список и возвращает FALSE.)
intList.FindIndex(i => i.Equals(1));
Возвращает позицию индекса первого экземпляра, которая соответствует лямбде. (снова, если возможно, рано)
intList.FindAll(i => i.Equals(1));
Возвращает подсписок всех элементов в intList, которые соответствуют лямбда-выражению. (естественно, это должно повторяться по всему списку, независимо от ...)
Новичок: Есть ли причина, по которой вы не можете использовать ни один из этих встроенных методов? Просто любопытно, как я хотел бы помочь.
Приветствие.