何时使用索引器,以及如何知道如何编写索引器

本文关键字:索引 何编写 何知道 何时使 | 更新日期: 2023-09-27 18:36:35

// 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是什么意思?我猜它是在说明如果它不在范围内,那么将新实例扔出范围。似乎很干脆,但我什么时候知道什么时候使用此异常?

何时使用索引器,以及如何知道如何编写索引器

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

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

它的唯一要点是检查陈述是否属实吗?

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

throw是什么意思?我猜它是在说明如果它不在范围内,那么将新实例扔出范围。似乎很干脆,但我什么时候知道什么时候使用此异常?

这与索引器关系不大,而与异常关系更大。如果您尚未了解异常,请在了解时解决此问题。但这只是一个边界检查,并不是例外的唯一用途。

索引器用作通常通过索引或键访问集合中元素的速记方法。

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

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