当前位置: 首页 > news >正文

C# 枚举器和迭代器(常见迭代器模式)

常见迭代器模式

前面两节的内容显示了我们可以创建迭代器来返回可枚举类型或枚举器。图19-11总结了如
何使用常见的迭代器模式。

  • 当我们实现返回枚举器的迭代器时,必须通过实现GetEnumerator来让类可枚举,它返回
    由迭代器返回的枚举器,如图19-11中左半部分所示。
  • 在类中实现返回可枚举类型的迭代器时,我们可以让类实现GetEnumerator来让类本身可
    枚举,或不实现GetEnumerator,让类不可枚举。
    • 如果实现GetEnumerator,让它调用迭代器方法以获取自动生成的实现1Enumerab1e
      的类实例。然后,从iFnumerab1e对象返回由GetEnumerator创建的枚举器,如图19-11
      右边所示。
    • 如果通过不实现GetEnumerator使类本身不可枚举,仍然可以使用由迭代器返回的可枚
      举类,只需要直接调用迭代器方法,如图19-11中右边第二个foreach语句所示。

常见迭代器模式

产生多个可枚举类型

在下面的示例中,spectrurn类有两个可枚举类型的迭代器—— 一个从紫外线到红外线枚举光
谱中的颜色,而另一个以逆序进行枚举。注意,尽管它有两个方法返回可枚举类型,但类本身不
是可枚举类型,因为它没有实现GetEnumerator。

using System;
using System.Collecions.Generic;class Spectrum
{string[] colors={"violet","blue","cyan","green","yellow","orange","red"};public IEnumerable<string>UVtoIR(){for(int i=0;i<colors.Length;i++)yield return colors[i];}public IEnumerable<string>IRtoUV(){for(int i=colors.Length-1;i>=0;i--)yield return colors[i];Console.WriteLine();foreach(string color in Spectrum.IRtoUV())Console.Write($"{color}");Console.WriteLine();}
}
http://www.lryc.cn/news/605881.html

相关文章:

  • 深入剖析:C++ 手写实现 unordered_map 与 unordered_set 全流程指南
  • 【React】fiber 架构
  • vue 中 props 直接解构的话会数据丢失响应式
  • MakeInstaller: 一款麒麟操作系统安装包制作工具
  • 3DXML 转换为 UG 的技术指南及迪威模型网在线转换推荐
  • DeepSeek笔记(三):结合Flask实现以WEB方式访问本地部署的DeepSeek-R1模型
  • 戴尔笔记本Ubuntu18.04 NVIDIA驱动与cuda环境配置教程
  • 【国内电子数据取证厂商龙信科技】内存取证
  • 工业绝缘监测仪:保障工业电气安全的关键防线
  • Towers
  • AI+金融,如何跨越大模型和场景鸿沟?
  • NXP i.MX8MP GPU 与核心库全景解析
  • mac操作笔记
  • C++ 入门基础(2)
  • MySQL自动化安装工具-mysqldeploy
  • 关于AR地产发展现状的深度探究​
  • 【AI大模型】披着羊皮的狼--自动化生成越狱提示的系统(ReNeLLM)
  • 无人机传感器系统架构解析
  • 客户服务自动化:如何用CRM减少50%人工工单?
  • HOOPS Exchange技术架构全解析:打造高效CAD/BIM数据导入与导出引擎
  • AR智能巡检:制造业运维效率提升的关键
  • AR-Align-NN-2024
  • 11.结构体
  • 项目中如何定义项目范围
  • Python:如何从地球大数据科学服务中心批量下载VPM-GPP?
  • 《Java 程序设计》第 17 章 - 并发编程基础
  • Ceph、K8s、CSI、PVC、PV 深入详解
  • ros2 tf2详解
  • 从 0 到 1:PHP 基础到就业教程指南(附教程资料)
  • ceph sc 设置文件系统格式化参数