索引超出范围异常与参数超出范围异常
本文关键字:异常 范围 参数 索引 | 更新日期: 2023-09-27 17:56:39
例如,使用列表对象时,检查超出范围的索引
List<MyObject> allServices = new List<MyObject>();
var indexOf = 0;
lnkBack.NavigateUrl = allServices[indexOf - 1].FullURL;
我认为它会抛出一个超出范围的索引异常,它会抛出一个超出范围的参数异常。 为什么会这样,当它是我们正在测试的索引时?
如果它类似于子字符串方法,其中子字符串(-1)将是一个参数,我会期待参数?
数组
并列出当您尝试访问负索引的项目时抛出ArgumentOutOfRangeException
而不是IndexOutOfRangeException
的IList<T>
:
MSDN:
ArgumentOutOfRangeException
:索引不是IList<T>
中的有效索引
您可以使用以下代码重现它:
IList<string> test = new string[]{ "0" };
string foo = test[-1]; // ArgumentOutOfRangeException
如果您将其用作string[]
则得到预期IndexOutOfRangeException
:
string[] test = new string[]{ "0" };
string foo = test[-1]; // IndexOutOfRangeException
这就是为什么它抛出IList<T>
ArgumentOutOfRangeException
而不是数组IndexOutOfRangeException
的原因。
将
列表作为数组访问只是一个语法功能。幕后发生的事情是代码使用 Item
属性,将索引作为参数发送。