如果您正在使用集合List<T>
或甚至在类中的arraylist,为什么要创建自己的枚举类,只需实现IEnumerable并返回枚举数。我在网上看到的例子,人们创建自己的enumerable类,并实现当前,下移等...何时创建您自己的IEnumerable类
3
A
回答
7
那么,如果你有一个集合类,你可能不会只是包装一些其他集合是Enumerable,应该。
也就是说,我总是更喜欢使用yield关键字,即使手动定义一个枚举。接下来定义电流/移动的大多数例子根本不知道产量或如何使用它。 (由于确切原因,我曾经实现了一个定义Current/Enumerable类的下一个类。)
另一种情况可能是基础集合是旧的并且不实现IEnumerable<T>
而只是IEnumerable
。如果你的集合是强类型的,你不仅需要返回它们的枚举器(至少它将是一个.Cast<T>()
调用)。
如果你确实有一个底层集合,它也可能是你不想公开公开的一些私有嵌套类(可能是某种自定义键值对)的集合。在这种情况下,您可能需要返回.Select调用,而不是仅传递现有的枚举器(但很可能不需要实际实现自己的迭代器)。
0
这些例子有可能是预泛型吗?我可以看到,如果您不使用泛型,那么您将被迫实现IEnumerable并实现它的方法。
3
比方说,你想遍历一个文件的行,你不想把它们全部加载到内存中。您可以返回一个IEnumerable<string>
,它将按需读取下一行,而不是将所有内容加载到内存中。我还喜欢使用yield
来处理这种类似于@Servy提到的情况。
相关问题
- 1. 创建您自己的ADDED_TO_STAGE事件
- 2. 创建您自己的系统颜色
- 3. 创建您自己的Keras优化器
- 4. 创建您自己的语言
- 5. magento:创建您自己的收藏
- 6. Android创建您自己的菜单
- 7. 创建自己的类
- 8. 创建您自己的Open Graph Protocol类型?
- 9. 如何使用闭集的值创建您自己的类型,在Scala
- 10. 如何为您自己的R包创建新闻功能
- 11. 在Linux内核中创建您自己的自定义信号
- 12. Java Android - 创建我自己的类
- 13. 创建自己的集合类
- 14. UIView子类创建自己的UIButtons
- 15. 要求自己构建自己的类
- 16. 创建我自己的GoPro实时流
- 17. 为您的网站创建广告系统(我自己的AdSense)
- 18. 创建您自己的散列表和散列表
- 19. 在Dynamics GP eConnect上创建您自己的Web服务?
- 20. 创建您自己的TRAP异常处理程序?
- 21. 推荐学习创建您自己的操作系统?
- 22. 创建您自己的光栅引擎是什么意思?
- 23. 尝试创建我自己的视图类时出现错误?
- 24. 创建自己的LiveWallpaperPreview?
- 25. 创建自己的JLabel
- 26. 创建自己的groovy库
- 27. 创建自己的NotificationStyle
- 28. 创建自己的“SeekBar”
- 29. 创建自己的Zend_Auth_Adapter
- 30. 使用您自己的API来构建您的网站
您在网上找到的示例可能是在C#支持的迭代器块之前编写的。 – phoog 2012-03-01 18:03:06