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.
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:
Mengirim 12 unit
Stok habis, pengiriman dihentikanMari kita telaah baris demi baris:
- Baris 1: Array
stokGudangmenyimpan empat angka stok, termasuk nol. - Baris 3–6 (elemen
12): Kondisistok == 0bernilaifalse, sehingga program mencetakMengirim 12 unit. - Baris 3–6 (elemen
0): Kondisi bernilaitrue, program mencetak pesan peringatan, lalubreakmengakhiri foreach loop. - Elemen
45dan8: 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.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue;
}
Console.WriteLine($"Nomor ganjil: {i}");
}Output yang Dihasilkan:
Nomor ganjil: 1
Nomor ganjil: 3
Nomor ganjil: 5
Nomor ganjil: 7
Nomor ganjil: 9Operator % 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.