我在我的库中添加了一个新类,它将成为公共文档 API 的一部分。底层数据结构是一个原生数组,尽管List<T>
在第一次生成原生数组时使用。
MSDN 表示List<T>
throwsArgumentOutOfRangeException
而不是IndexOutOfRangeException
(在访问本机数组时可以抛出)。
因此,我计划更新我的函数以始终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];
}
}
我的问题是这样的:
上述源代码是否会产生两个范围检查(我的一个 + 本机数组一个),或者 .NET 编译器是否足够聪明,可以删除这些IndexOutOfRangeException
检查?