Loop yang normal berjalan sampai kondisinya selesai, tetapi kebutuhan nyata sering menuntut penyimpangan: pengiriman harus berhenti saat stok habis, dan nomor genap tidak perlu dicetak dalam daftar undian. Statement break dan continue menyediakan dua penyimpangan itu: break mengakhiri loop seketika, sedangkan continue melompat ke putaran berikutnya.

Break: Mengakhiri Loop Lebih Awal #

Statement break menghentikan loop yang membungkusnya pada saat itu juga. Eksekusi berpindah ke statement pertama setelah blok loop, dan sisa elemen tidak diproses lagi. Statement ini juga berperan sebagai penutup case pada switch statement yang sudah kita bahas, tetapi di dalam loop perannya lebih luas karena dapat dipanggil dari mana saja di dalam body.

csharp
int[] stokGudang = { 12, 0, 45, 8 };

foreach (int stok in stokGudang)
{
    if (stok == 0)
    {
        Console.WriteLine("Stok habis, pengiriman dihentikan");
        break;
    }

    Console.WriteLine($"Mengirim {stok} unit");
}

Output yang Dihasilkan:

text
Mengirim 12 unit
Stok habis, pengiriman dihentikan

Mari kita telaah baris demi baris:

  1. Baris 1: Array stokGudang menyimpan empat angka stok, termasuk nol.
  2. Baris 3–6 (elemen 12): Kondisi stok == 0 bernilai false, sehingga program mencetak Mengirim 12 unit.
  3. Baris 3–6 (elemen 0): Kondisi bernilai true, program mencetak pesan peringatan, lalu break mengakhiri foreach loop.
  4. Elemen 45 dan 8: Keduanya tidak pernah dikunjungi karena loop sudah berakhir sebelum sempat mengunjunginya.

Statement break berlaku pada segala bentuk loop, baik for, while, do-while, maupun foreach, dan penempatannya selalu di dalam blok loop. Bila break dipanggil di dalam beberapa loop bersarang, hanya loop terdalam yang berhenti; cara keluar dari kedalaman yang lebih banyak dibahas pada chapter nested loop dan goto dan label.

Continue: Melompat ke Putaran Berikutnya #

Statement continue tidak mengakhiri loop; statement ini melompati sisa body pada putaran tersebut dan langsung masuk ke putaran berikutnya. Pada for loop, lompatan tetap melewati bagian iterator, sehingga counter tetap bertambah dan loop tidak berhenti.

csharp
for (int i = 1; i <= 10; i++)
{
    if (i % 2 == 0)
    {
        continue;
    }

    Console.WriteLine($"Nomor ganjil: {i}");
}

Output yang Dihasilkan:

text
Nomor ganjil: 1
Nomor ganjil: 3
Nomor ganjil: 5
Nomor ganjil: 7
Nomor ganjil: 9

Operator % menghasilkan sisa pembagian. Setiap i genap memenuhi i % 2 == 0, lalu continue melompat ke i++ tanpa mencetak apa pun, sehingga hanya lima nomor ganjil yang tampil di output.

Pola continue paling sering dipakai untuk menyaring data: baris kosong dilewati, nilai tidak valid dilewati, atau kategori tertentu tidak diproses. Penyaringan semacam ini terbaca jelas bila continue diletakkan paling awal di dalam body, sebelum logika utama, sehingga pembaca langsung menangkap syarat lewatnya tanpa membaca seluruh blok.