Kesalahan Umum dalam Iterasi
Mengubah data saat melakukan iterasi.
Kesalahan Umum dalam Iterasi adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Kesalahan Umum dalam Iterasi
Perulangan memang sederhana, tetapi beberapa kesalahan terus menjebak pemula.
Dalam pelajaran ini, kita membahas kesalahan iterasi yang paling umum dan cara menghindarinya.
Mengubah Koleksi Saat Melakukan Iterasi
Kesalahan terbesar adalah mengubah koleksi saat Anda melakukan foreach terhadapnya.
Menambahkan atau menghapus elemen selama iterasi menyebabkan InvalidOperationException saat program dijalankan.
foreach (var n in list)
{
if (n < 0) list.Remove(n); // ERROR at runtime
}Perbaikan yang Aman
Untuk menghapus elemen saat melakukan perulangan, lakukan iterasi pada salinan, atau kumpulkan elemen terlebih dahulu lalu hapus setelahnya.
Melakukan perulangan pada list.ToList() memberi Anda salinan terpisah untuk ditelusuri.
var list = new List<int> { 1, -2, 3, -4 };
foreach (var n in list.ToList())
{
if (n < 0) list.Remove(n);
}
Console.WriteLine(string.Join(",", list));Kesalahan Satu Langkah pada Perulangan
Dalam perulangan for manual, penggunaan <= alih-alih < akan membaca melewati akhir.
Indeks yang valid berkisar dari 0 hingga Length - 1, jadi kondisinya harus berupa i < Length.
for (int i = 0; i <= arr.Length; i++) // BUG: <= goes too far
{
Console.WriteLine(arr[i]);
}IndexOutOfRange
Kesalahan satu langkah tersebut menyebabkan IndexOutOfRangeException.
foreach menghindari masalah ini sepenuhnya karena tidak pernah menggunakan indeks. Pilihlah ini ketika Anda hanya perlu membaca elemen.
string[] arr = { "a", "b", "c" };
for (int i = 0; i < arr.Length; i++) // correct: < Length
{
Console.WriteLine(arr[i]);
}Mengharapkan foreach Mengubah Elemen
Menetapkan nilai ke variabel perulangan tidak mengubah koleksi, dan untuk tipe nilai, variabel tersebut juga merupakan salinan.
Untuk memperbarui elemen, gunakan perulangan for dengan pengindeksan.
int[] nums = { 1, 2, 3 };
for (int i = 0; i < nums.Length; i++)
{
nums[i] = nums[i] * 10;
}
Console.WriteLine(string.Join(",", nums));Koleksi Tanpa Nilai
Memanggil foreach pada referensi null menyebabkan NullReferenceException.
Koleksi empty tidak bermasalah, tetapi null tidak. Periksa atau inisialisasi koleksi sebelum melakukan perulangan.
List<int> data = null;
if (data != null)
{
foreach (var x in data) Console.WriteLine(x);
}Kebingungan tentang Cakupan Variabel
Variabel perulangan hanya ada di dalam isi perulangan.
Mencoba menggunakannya setelah perulangan merupakan kesalahan kompilasi, karena variabel tersebut berada di luar cakupan setelah perulangan berakhir.
foreach (var n in nums)
{
Console.WriteLine(n);
}
// Console.WriteLine(n); // ERROR: n not in scope hereLupa Menggunakan Kurung Kurawal
Tanpa kurung kurawal, hanya satu pernyataan berikutnya yang menjadi bagian dari perulangan.
Hal ini dapat merusak logika tanpa terlihat jelas. Selalu gunakan kurung kurawal untuk isi perulangan yang terdiri dari beberapa baris agar maksud kode tetap jelas.
foreach (var n in nums)
Console.WriteLine(n);
Console.WriteLine("runs once, not per item");Risiko Tak Berujung pada while
Berbeda dari foreach, perulangan while dapat berjalan selamanya jika kondisinya tidak pernah menjadi salah.
Selalu pastikan ada sesuatu di dalam perulangan yang bergerak menuju kondisi keluar.
int i = 0;
while (i < 3)
{
Console.WriteLine(i);
i++; // forgetting this would loop forever
}Memilih Perulangan yang Tepat
Baca setiap elemen tanpa memerlukan indeks → foreach.
Memerlukan indeks atau harus mengubah elemen secara langsung → for. Ulangi hingga suatu kondisi berubah → while.
Uji Singkat
Uji pemahaman Anda tentang kesalahan dalam melakukan iterasi.
Rangkuman
Anda telah mempelajari cara menghindari perubahan pada koleksi selama foreach, kesalahan satu langkah dengan <=, koleksi null, dan kebingungan tentang cakupan.
Pilih foreach untuk membaca, for untuk mengubah berdasarkan indeks, dan while untuk perulangan berbasis kondisi dengan jalan keluar yang jelas.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kesalahan Umum dalam Iterasi” gratis?
Ya — teks lengkap “Kesalahan Umum dalam Iterasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kesalahan Umum dalam Iterasi”?
Mengubah data saat melakukan iterasi. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Kesalahan Umum dalam Iterasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Loop foreach
- Melakukan Iterasi pada Koleksi
- break dan continue
- Kesalahan Umum dalam Iterasi