「.NET "インデックスの理解と解決の範囲外エラー
.NETの「indexoutofRangeException」は、無効なインデックスを使用してコレクション内のアイテム(配列やリストなど)にアクセスしようとすると発生します。 .NETコレクションはゼロインデックス化されているため、有効なインデックス範囲は0から(長さ-1)です。 この範囲を超えた要素にアクセスしようとすると、ネガティブインデックスまたは長さ以上のインデックスを使用して、この例外を魅了します。配列の例で説明しましょう:
ここで、
<code class="language-csharp">int[] numbers = new int[5]; // Array with 5 elements (indices 0-4) Console.WriteLine(numbers[5]); // Throws IndexOutOfRangeException</code>
numbers[5]
他のコレクションと協力しています
このゼロベースのインデックスは、を含む他のコレクションに適用されます。 最後のアクセス可能な要素は、常にindex。
にあります安全なイテレーションについては、明示的な境界チェックを備えたList<T>
ループを使用することを検討してください:Count - 1
またはさらに良いことに、for
ループを使用して、反復を自動的に処理し、インデックスエラーを防止します。
<code class="language-csharp">List<string> names = new List<string> { "Alice", "Bob", "Charlie" }; for (int i = 0; i < names.Count; i++) { Console.WriteLine(names[i]); }</code>
IndexOutOfRangeExceptionsの防止foreach
<code class="language-csharp">foreach (string name in names) { Console.WriteLine(name); }</code>
インデックスの検証:要素にアクセスする前に、インデックスが有効な範囲内にあることを必ず確認してください(0〜または
)。 使用Length - 1
プロパティ(配列用)を使用して、コレクションのサイズを決定します。
Count - 1
Count
ループは反復を簡素化し、手動インデックスエラーのリスクを排除します。
Length
例外を処理する(優雅に):Count
ブロックを使用して、潜在的なLength
インスタンスを処理し、アプリケーションのクラッシュを防ぎます。 これにより、より堅牢なエラー処理が可能になります
以上がコードで「範囲外」エラーを取得するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。