0
// Indexer for the _accountList
public Account this[int index]
{
    get
    {
        if (index >= 0 && index < _accountList.Length)
            return _accountList[index];
        else
            throw new IndexOutOfRangeException("index is out of range");
    }
}

这些是我做的一些笔记,也是我们正在讨论的内容,但经过研究,我仍然对何时以及如何使用索引器的理论感到模糊。

我的问题只是如何以及何时知道使用索引器?它的唯一目的是检查一个陈述是否正确?在哪里可以为初学者更深入地阅读索引器?最后一行的异常是什么意思?

throw new IndexOutOfRangeException("index is out of range");

是什么throw意思?我猜它是在说明如果它不在范围内,那么将新实例抛出范围之外。看起来很枯燥,但我什么时候知道什么时候使用这个例外?

4

2 回答 2

2

我的问题只是如何以及何时知道使用索引器?

在方便并且在访问对象方面有意义时使用索引器。例如,如果您正在实现自定义列表类型,您可能会提供一个索引器以方便、干净、类似列表的访问。如果您正在实现一个表示进程的类,您可能不会实现索引器,因为进程显然不是项目的集合。

它的唯一目的是检查一个陈述是否正确?

不,甚至没有接近。关键是获取和/或设置集合中由索引指定的项目。

是什么throw意思?我猜它是在说明如果它不在范围内,那么将新实例抛出范围之外。看起来很枯燥,但我什么时候知道什么时候使用这个例外?

这与索引器关系不大,而与异常有关。如果您还没有了解异常,请在了解时解决这个问题。但这只是一个边界检查,并不是唯一使用异常的东西。

于 2012-06-07T03:27:28.913 回答
1

索引器用作通常通过索引或键访问集合中元素的简写方式。

在您的示例中,索引器允许您Account在指定的index. 逻辑检查以确保 的值index在集合中的项目范围内。

因此,例如,如果Account集合中只有 2 个,并且您要求Accountat 索引 3,则您要求的是一个不存在的项目。因此IndexOutOfRangeException.

于 2012-06-07T03:22:10.180 回答