5

インデックス付きのプロパティで、インデックスが範囲外かどうかを確認します。もしそうなら、私は投げますIndexOutOfBoundsException

コードアナリスト(VS12)を実行すると、CA1065:予期しない場所での予期しない例外が発生します。

CA1065の説明を参照すると、

System.InvalidOperationException
System.NotSupportedException
System.ArgumentException
KeyNotFoundException

インデックス付きゲッターで許可されます。

投げるIndexOutOfBoundsExceptionことは私には自然に思えます、それでここでの理由は何ですか?(はい、警告をオフにできることはわかっています。理由を知りたいだけです)

4

2 に答える 2

7

ArgumentOutOfRangeExceptionこれには、を含む多くのクラスが使用されList<T>ます。これはのサブクラスであるArgumentExceptionため、ルールを満たす必要があります。直接アクセスされるベクトルなどの場合、実際にはメソッド呼び出しがない(専用のオペコード- ldelem*)ので、その場合のインデックスは実際には引数ではないと主張できると思います。しかし、弱い議論のようです。

于 2012-09-02T17:40:46.470 に答える
5

MSDNを参照してください:IndexOutOfRangeExceptionはシステム例外であり、配列要素にアクセスするために予約されています。それはいくつかのMSIL命令によってスローされます:ldelem。、ldelema、stelem ..

クラスを開発するには、ArgumentOutOfRangeExceptionを使用します。

于 2012-09-02T17:45:52.320 に答える