将 IEnumerator/IEnumerable 实施到自定义队列 class 与使用队列
Implement IEnumerator/IEnumerable into a custom Queue class vs. using a Queue
这里是一位 OOP 初学者。
我只需要做一个练习,我必须在 C# 中创建一个自定义 class,在家庭作业 TODO 中,需要实现 IENumerable 和 IENumerator 接口,并创建一个自定义队列 class 类型对象。
虽然我没有问题解决问题,但我仍然不明白它的用法。与其编写这么多代码来实现自定义队列,不如简单地使用 C# 框架中已经存在的“队列”?这有什么performance/optimisation优势吗?
那么,使用 MyCustomObjectQueue 而不是使用 Queue<'MyCustomObject'> 有什么好处吗?
如评论中所述,这是一个让您熟悉概念的练习。在现实世界中,您几乎总是会使用现有的队列实现。
但是这个练习不是没有意义的。了解如何实现 IEnumerable 非常有价值。 IEnumerator 有点不那么重要,因为您可以使用 iterator block 让编译器为您完成。
框架中的集合是为通用用途而制作的,如果您有一些特殊的使用模式,有时制作您自己的变体会很有用,但这种情况很少见。
根据我的经验,实现集合的最常见情况是包装现有集合以添加一些额外的功能,或者实现未提供的集合,如环形缓冲区或堆。
这里是一位 OOP 初学者。 我只需要做一个练习,我必须在 C# 中创建一个自定义 class,在家庭作业 TODO 中,需要实现 IENumerable 和 IENumerator 接口,并创建一个自定义队列 class 类型对象。
虽然我没有问题解决问题,但我仍然不明白它的用法。与其编写这么多代码来实现自定义队列,不如简单地使用 C# 框架中已经存在的“队列”?这有什么performance/optimisation优势吗?
那么,使用 MyCustomObjectQueue 而不是使用 Queue<'MyCustomObject'> 有什么好处吗?
如评论中所述,这是一个让您熟悉概念的练习。在现实世界中,您几乎总是会使用现有的队列实现。
但是这个练习不是没有意义的。了解如何实现 IEnumerable 非常有价值。 IEnumerator 有点不那么重要,因为您可以使用 iterator block 让编译器为您完成。
框架中的集合是为通用用途而制作的,如果您有一些特殊的使用模式,有时制作您自己的变体会很有用,但这种情况很少见。
根据我的经验,实现集合的最常见情况是包装现有集合以添加一些额外的功能,或者实现未提供的集合,如环形缓冲区或堆。