-1

每次我必须通过索引访问数组时,我必须检查我是否没有创建IndexOutOfRange异常,这让我很烦恼。

我明白为什么数组会抛出异常而不是仅仅返回null. 那会很酷,因为我可以使用??运算符,但是好的,这些是遗留类型,我很好。

但是,为什么 BCL 团队没有TryGet(int index, out T value) 像他们那样实施,例如,List<T>?据我了解,他们本可以将其放入 Linq Extensions 中,因为 Array 已经实现了 IEnumerable

4

1 回答 1

3

你需要改变你的想法——这是IndexOutOfRangeException因为你不应该首先访问这些索引

相反,您应该在访问索引之前检查数组长度:

string value = null;
if (i < array.Length) value = array[i];

或者

for (int i=0; i<array.Length; i++) {
    ...
}

IndexOutOfRangeException被归类为愚蠢的异常- 如果它被抛出,你做错了什么。

于 2013-06-21T15:57:09.180 回答