当前位置: 首页 > 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.dtcms.com/a/308128.html

相关文章:

  • 26考研|数学分析:重积分
  • ubuntu24.04环境下树莓派Pico C/C++ SDK开发环境折腾记录
  • 设计模式:命令模式 Command
  • AI驱动下的数据新基建:腾讯游戏数据资产治理与湖仓架构革新
  • 【数据结构入门】时间、空间复杂度的计算
  • 装修风格怎么选
  • LoggerFactory(日志门面框架核心工厂类)详解
  • 【普中STM32精灵开发攻略】--第 1 章 如何使用本攻略
  • MySQL 查询中的 UNION、UNION ALL 和 DISTINCT
  • 用Python绘制SM2国密算法椭圆曲线:一场数学与视觉的盛宴
  • AI赋能操作系统:通往智能运维的未来
  • PyTorch L2范数详解与应用
  • 安卓Gradle总结
  • 【机器学习篇】01day.python机器学习篇Scikit-learn入门
  • Java 安全框架(尤其是 Spring Security)中,Object principal(主体对象)详解
  • 计算机网络学习--------三次握手与四次挥手
  • JavaScript 框架语法特性对比-中文版
  • 前端方案设计:实现接口缓存
  • Tlias 案例-部门管理(前端)
  • 报文头 和fprint的说明 day45
  • 前端-移动Web-day2
  • 极客大挑战2020(部分wp)
  • 【1】数据可视化分析方法
  • 【go】 if条件控制语句
  • 渗透RCE
  • php在使用 composer 安装时报错集合
  • Jmeter 命令行压测、HTML 报告、Jenkins 配置目录
  • 材质:3D渲染的隐形支柱
  • 第二篇:Three.js核心三要素:场景、相机、渲染器
  • Linux网络-------3.应⽤层协议HTTP