-
および IndexOutOfRangeException
ArgumentOutOfRangeException
の詳細な理解
および
は、C#の一般的な異常です。
IndexOutOfRangeException
異常な発生のタイミングArgumentOutOfRangeException
配列:数値の数へのアクセスは、配列の上限または下限を超えます。 C#の配列は0に基づいています。つまり、最初の要素のインデックスは0です。
index属性:- 無効なインデックス設定またはアクセス属性を使用します。たとえば、クラスに「アイテム」と呼ばれるインデックス属性がある場合、5つのプロジェクトのみを持つクラスでアイテム[6]にアクセスすると、異常を引き起こします。
リスト(list ):
- アクセス範囲は[0、list.count -1]を超えています。
データソース:
idareaderまたは同様のデータソースのインデックスに従って列にアクセスしてみてください。列は存在しないか、間違っています。 -
一般的な理由
-
「Cross -border」エラーまたは計算エラーは、インデックスにアクセスするときに発生します。
配列の上限が含まれていると仮定します。
無効なパラメーターまたは非integerインデックスを使用します。
セットにアクセスしようとする前に、 lifn初期化または検証入力。
-
- を回避する方法
- セットにアクセスする前に、すべての入力インデックスとパラメーターを確認します。
- 要素にアクセスする前に、配列の長さとリストカウントを確認します。
配列またはリストで反復した場合、境界のサイクルを明確に指定します。
リストのようなコレクションクラスの使用を検討してください。コンピレーション中に境界チェックを許可します。
インデックス属性に強い検証関数があることを確認して、無効なアクセスを防ぎます。 -
- どのようにデバッグするか
-
- デバッグツールを使用して、異常な位置にブレークポイントを設定します。
スタックトラッキングをチェックして、問題関連のコード行を識別します。 -
セットにアクセスするために使用される入力値を確認します。
アクセッションのコレクションが正しく初期化され、充填されているかどうかを確認します。
カスタムインデックス作成ロジックが正しく実装され、エッジ条件が処理されていることを確認してください。
- vb.net
- の違い
VB.NETアレイ宣言は、カウントする代わりに最大のインデックスを使用します。したがって、サイズnを持つ配列の有効なインデックスは0からn-1です。 n以上のインデックスにアクセスしてみてください。異常を引き起こします。 -
以上がC#のIndexOutOfRangeExceptionとargupeOutOfRangeExceptionの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。