Memahami IndexOutOfRangeException dalam C#

王林
Lepaskan: 2024-08-01 19:23:34
asal
732 orang telah melayarinya

Understanding IndexOutOfRangeException in C#

Apakah Maksud "IndexOutOfRangeException"?

Dalam istilah orang awam, IndexOutOfRangeException berlaku apabila anda cuba mengakses elemen dalam koleksi (seperti tatasusunan atau senarai) menggunakan indeks yang berada di luar julat indeks yang sah untuk koleksi itu. Anggaplah ia cuba membuka buku ke halaman yang tidak wujud.

Analogi Kehidupan Sebenar
Bayangkan anda mempunyai rak buku dengan 10 buku di atasnya, bernombor 0 hingga 9 (kerana dalam pengaturcaraan, indeks selalunya bermula dari 0). Jika anda ingin memilih buku ke-5, anda lihat pada kedudukan 4 (kedudukan kelima jika anda mula mengira dari 0). Tetapi jika anda cuba memilih buku pada kedudukan 10, anda cuba mengakses buku yang tidak ada, kerana rak anda hanya naik ke kedudukan 9. Inilah yang berlaku apabila IndexOutOfRangeException dilemparkan.

Contoh Senario
Katakan anda mempunyai pelbagai nama:

string[] names = { "Alice", "Bob", "Charlie" };

Salin selepas log masuk

Dalam tatasusunan ini:

  • nama[0] ialah "Alice"
  • nama[1] ialah "Bob"
  • nama[2] ialah "Charlie"

Jika anda cuba mengakses nama[3], anda akan mendapat IndexOutOfRangeException kerana tiada unsur pada indeks 3—tatasusunan anda hanya naik ke indeks 2.

Senario Kehidupan Sebenar yang Anda Tidak Akan Lupa

Bayangkan anda menganjurkan konsert dengan tempat duduk yang ditetapkan. Anda mempunyai 100 kerusi, bernombor 0 hingga 99. Jika seseorang cuba duduk di kerusi nombor 100, mereka akan cuba duduk di kerusi yang tidak wujud. Mereka mungkin keliru, mengganggu acara itu, atau mencederakan diri mereka sendiri kerana cuba menyesuaikan diri dalam ruang yang tidak wujud. Ini serupa dengan apa yang berlaku dalam kod anda—cuba mengakses elemen yang tidak wujud boleh menyebabkan program anda ranap atau berkelakuan secara tidak dijangka.

Mencegah dan Memperbaiki IndexOutOfRangeException

1. Sentiasa Semak Indeks Anda

Sebelum mengakses elemen, pastikan indeks berada dalam julat yang sah:

if (index >= 0 && index < names.Length)
{
    Console.WriteLine(names[index]);
}
else
{
    Console.WriteLine("Index out of range");
}

Salin selepas log masuk

2. Gunakan Gelung Berhati-hati

Apabila menggunakan gelung, pastikan sempadan gelung ditetapkan dengan betul:

for (int i = 0; i < names.Length; i++)
{
    Console.WriteLine(names[i]);
}

Salin selepas log masuk

3. Gunakan Kaedah Terbina Dalam

Apabila berurusan dengan senarai, gunakan kaedah seperti ElementAtOrDefault untuk mengakses elemen dengan selamat:

List<string> namesList = new List<string> { "Alice", "Bob", "Charlie" };
string name = namesList.ElementAtOrDefault(3); // Returns null if the index is out of range

Salin selepas log masuk

Petua Nyahpepijat

  • Semak Panjang Tatasusunan: Pastikan tatasusunan atau senarai anda dimulakan dengan betul dan mengandungi bilangan elemen yang dijangkakan.

  • Indeks Cetak: Cetak nilai indeks sebelum mengakses elemen untuk memastikan ia berada dalam julat yang sah.

Kesimpulan

IndeksOutOfRangeException ialah ralat biasa yang berlaku apabila anda cuba mengakses elemen dalam koleksi menggunakan indeks yang tidak sah. Dengan memahami punca dan menggunakan langkah pencegahan, anda boleh mengelakkan ralat ini dan memastikan program anda berjalan lancar. Sentiasa ingat analogi konsert—ia adalah cara yang bagus untuk menggambarkan masalah dan ingat untuk memastikan indeks anda terkawal!

Akaun LinkedIn : LinkedIn
Akaun Twitter: Twitter
Kredit: Grafik bersumberkan Log MasukRadius

Atas ialah kandungan terperinci Memahami IndexOutOfRangeException dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan