【发布时间】:2013-07-21 06:06:23
【问题描述】:
假设我们有一个简单的 Person 类:
public Person this[int index]
{
get { return (Person)arPeople[index]; }
set { arPeople.Insert(index, value); }
}
假设我有一个包含 N 个 Person 对象的数组。 如果我尝试访问不存在的索引(例如 N+1),我应该在这种情况下抛出异常还是返回 null?在这种情况下有哪些考虑?
提前致谢……
【问题讨论】:
-
访问超出范围的索引时
arPeople是什么意思?在大多数情况下,索引器在找不到索引时会抛出异常(请参阅Dictionary、List、...)。 -
Arrays 毫不犹豫地抛出
IndexOutOfRangeException,你为什么要这么做? -
你们是对的人,阅读帖子,谢谢:)
-
我可以想到一个数据结构,你不会想要一个
IndexOutOfRangeException:一个环形缓冲区。例如:如果您尝试访问元素0、10、20等,则包含 10 个元素的环将返回第一个元素,如果您要求访问1、11,则返回第二个元素,21,等等等等。它可能有用。不过,我不知道这样的数据结构是否存在,因为它很容易实现:ring[i % ring.Count] -
@Nolonar,在这种情况下,索引 1521 处的元素存在。因此,没有理由返回 null 或抛出异常。
标签: c#