C# の IndexOutOfRangeException を理解する

王林
リリース: 2024-08-01 19:23:34
オリジナル
652 人が閲覧しました

Understanding IndexOutOfRangeException in C#

IndexOutOfRangeException」とはどういう意味ですか?

平たく言えば、IndexOutOfRangeException は、コレクションの有効なインデックスの範囲外のインデックスを使用してコレクション (配列やリストなど) 内の要素にアクセスしようとすると発生します。これは、本を開いて存在しないページを表示しようとしていると考えてください。

現実のたとえ
本棚に 0 から 9 までの番号が付けられた 10 冊の本があると想像してください (プログラミングでは、インデックスは 0 から始まることが多いため)。 5 番目の本を選びたい場合は、4 番目の位置 (0 から数えると 5 番目の位置) を見ます。しかし、位置 10 にある本を選択しようとすると、棚は位置 9 までしかないため、そこにない本にアクセスしようとすることになります。これは、IndexOutOfRangeException がスローされたときにまさに起こることです。

シナリオ例
名前の配列があるとします:

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

ログイン後にコピー

この配列内:

  • 名前[0] は「アリス」です
  • 名前[1] は「ボブ」です
  • 名前[2]は「チャーリー」です

names[3] にアクセスしようとすると、インデックス 3 には要素がなく、配列はインデックス 2 までしかないため、IndexOutOfRangeException が発生します。

忘れられない現実のシナリオ

座席が指定されたコンサートを企画していると想像してください。 0 から 99 までの番号が付けられた 100 席があります。誰かが 100 番の席に座ろうとすると、存在しない席に座ろうとすることになります。彼らは混乱したり、イベントを中断したり、存在しない空間に溶け込もうとして自分自身を傷つけたりするかもしれません。これはコード内で起こることと似ています。存在しない要素にアクセスしようとすると、プログラムがクラッシュしたり、予期せぬ動作をしたりする可能性があります。

IndexOutOfRangeException の防止と修正

1.インデックスを常に確認してください

要素にアクセスする前に、インデックスが有効な範囲内にあることを確認してください。

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

ログイン後にコピー

2.ループは慎重に使用してください

ループを使用する場合は、ループの境界が正しく設定されていることを確認してください。

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

ログイン後にコピー

3.組み込みメソッドを使用する

リストを扱うときは、ElementAtOrDefault などのメソッドを使用して要素に安全にアクセスします。

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

ログイン後にコピー

デバッグのヒント

  • 配列の長さの確認: 配列またはリストが適切に初期化されており、予想される数の要素が含まれていることを確認してください。

  • インデックスの印刷: 要素にアクセスする前にインデックス値を印刷して、要素が有効な範囲内にあることを確認します。

結論

IndexOutOfRangeException は、無効なインデックスを使用してコレクション内の要素にアクセスしようとしたときに発生する一般的なエラーです。原因を理解し、予防措置を講じることで、このエラーを回避し、プログラムをスムーズに実行することができます。コンサートの例えを常に思い出してください。これは問題を視覚化し、インデックスを常にチェックするのに最適な方法です。

LinkedIn アカウント: LinkedIn
Twitterアカウント: Twitter
クレジット: グラフィックの出所は LoginRadius

以上がC# の IndexOutOfRangeException を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!