ArgumentOutOfRangeException
引数の値が許容範囲外の場合に発生するC#の例外
概要
System.ArgumentOutOfRangeExceptionは、メソッドに渡された引数の値が許容範囲外の場合に発生します。リストや配列のインデックス範囲外アクセスが最も一般的な原因です。
エラーメッセージ
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at System.Collections.Generic.List`1.get_Item(Int32 index)
at MyApp.Program.Main(String[] args) in Program.cs:line 15
原因
- インデックス範囲外: リストや配列のサイズを超えるインデックスでアクセス
- 空のコレクション: 要素が0件のコレクションに対してインデックスアクセス
- 負のインデックス: 負の値をインデックスとして使用
- Substringの範囲外: 文字列長を超える位置を指定
解決策
1. 境界チェックを行う
アクセス前にインデックスの範囲を確認する。
| |
2. ElementAtOrDefaultを使用する
| |
3. Guard Clauseを実装する
メソッドの入口で引数を検証する。
| |
4. 文字列操作での対処
| |
5. コレクション初期化の確認
| |
関連エラー
- NullReferenceException - null参照アクセスで発生
- InvalidOperationException - 無効な操作で発生
C# の他のエラー
この記事は役に立ちましたか?