繁体   English   中英

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

[英]When Do I use indexers, and how to know how to write them

// 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是什么意思? 我猜这表明如果不在范围内,则将新实例超出范围。 似乎干了,但是我何时知道何时使用此异常?

这与索引器的关系较小,而与异常的关系较大。 如果您还没有了解异常,请在处理异常时解决。 但这只是边界检查,并不是唯一的例外处理。

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

在您的示例中,索引器使您可以在指定的index处获取Account 逻辑检查以确保index的值在集合中项目的范围内。

因此,例如,如果集合中只有2个Account ,而您要求在索引3处输入Account ,则您要查询的项目不存在。 因此, IndexOutOfRangeException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM