当使用列表对象时,如果检查的索引超出范围,例如:
List<MyObject> allServices = new List<MyObject>();
var indexOf = 0;
lnkBack.NavigateUrl = allServices[indexOf - 1].FullURL;
当我认为它会抛出一个索引超出范围异常时,它却抛出了一个参数超出范围的异常。为什么呢?毕竟我们正在测试一个索引。
如果是像子字符串方法,那么substring(-1)就会是一个参数,这时我才会期望抛出参数异常。
IList<T>.this[int]
抛出ArgumentOutOfRangeException
,而数组抛出IndexOutOfRangeException
。 - David Lechner