2

パブリック ドキュメント API の一部となる新しいクラスをライブラリに追加しました。基礎となるデータ構造はネイティブ配列ですList<T>が、最初にネイティブ配列を生成するときに使用されます。

MSDN は、 (ネイティブ配列にアクセスするときにスローされる可能性がある)ではなく、List<T>スローすることを示しています。ArgumentOutOfRangeExceptionIndexOutOfRangeException

ArgumentOutOfRangeExceptionしたがって、次のように、ドキュメント化された API 内で一貫性を保つために常にスローするように関数を更新する予定です。

public class MyClass {
    private int[] _values;

    public int GetValue(int index) {
        if (index < 0 || index >= _values.Length)
            throw new ArgumentOutOfRangeException("index");
        return _values[index];
    }
}

私の質問はこれです:

上記のソースでは 2 つの範囲チェック (私の 1 つ + ネイティブ配列の 1 つ) が発生しますか、それとも .NET コンパイラはIndexOutOfRangeExceptionチェックを削除するほどスマートですか?

4

1 に答える 1

2

なぜわざわざ?彼らが同じ例外を使用しないのは奇妙であり、おそらくテキストArgumentOutOfRangeExceptionがインデックスが範囲外であると述べているのはさらに奇妙であることに同意しますが、これが多くの価値を追加しているとは思いません。

これらの例外は通常、修正が必要なプログラム エラーを示しています。例外をキャッチして「処理」するべきではありません。

于 2014-04-30T15:01:34.340 に答える