Как и
break,
оператор
continue
позволяет изменять выполнение цикла. Но
continue
не завершает встроенный оператор текущего цикла, а останавливает текущую итерацию и передает управление на начало цикла для следующей итерации. В следующем примере я хочу проверить, не повторяются ли строки в массиве. Один из вариантов решения — просматривать массив с помощью вложенных циклов, сравнивая один элемент с другим. Но мне, конечно же, не хочется сравнивать элемент с самим собой, иначе я вычислю неверное число совпадающих элементов. Следовательно, если один индекс массива (/) совпадает с другим индексом этого массива (/'), это значит, что у меня один и тот же элемент и сравнивать их не нужно. В этом случае я использую оператор
continue
чтобы прекратить текущую итерацию и передать управление на начало цикла.
using System;
using System.Collections;
class MyArray {
public ArrayList words;
public MyArrayO {
words = new ArrayListO; words.Add("foo"); words.Add("bar"); words.AddC'baz"); words.Add("bar"); words.AddC'ba"); words.Add("foo"); } >
class ContinueApp {
public static void MainQ
{
MyArray myArray = new MyArrayO; ArrayList dupes = new ArrayListO;
Console.WriteLine("Обработка массива..."); for (int i = 0; i < myArray.words.Count; i++)
{
for (int J = 0; j < myArray.words.Count; ]++)
{
if (i == j) continue;
if (myArray.words[i] == myArray.words[j]
&& !dupes.Contains(j)) {
dupes.Add(i);
Console.WriteLine("'{0}' встречается "+ "в строках {1} и {2}". myArray.words[i], i + 1, ] + 1); } } } Console.WriteLine("Было обнаружено {0} совпадений",
((dupes.Count > 0) ? dupes.Count.ToStringO : "no")); } >
Для просмотра массива сгодился бы и цикл
foreach.
Однако здесь я хотел отслеживать текущий элемент, так что лучше использовать
for.