何时使用索引器,以及如何编写它们

时间:2012-06-07 03:18:34

标签: c#

// 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是什么意思?我猜它说如果它不在范围内,那么将新实例抛出范围。看似切割和干燥但我什么时候知道何时使用此例外?

2 个答案:

答案 0 :(得分:2)

  

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

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

  

唯一的一点是检查一个陈述是否属实?

没有。差远了。关键是获取和/或设置由索引指定的集合中的项目。

  

throw是什么意思?我猜它说如果它不在范围内,那么将新实例抛出范围。看似切割和干燥但我什么时候知道何时使用此例外?

这与索引器关系不大,而与异常关系更多。如果您尚未了解异常,请在执行此操作时解决此问题。但它只是一个边界检查,并不是唯一使用异常的东西。

答案 1 :(得分:1)

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

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

例如,如果集合中只有2个index,并且您在索引3处要求Account,那么您要求的项目不存在。因此Account

相关问题