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

华为云网站备案流程做一家网站

华为云网站备案流程,做一家网站,给别人做网站的话术,动漫制作技术是干什么的文章目录 19.1 枚举器和可枚举类型19.2 IEnumerator 接口19.3 IEnumerable 接口19.4 泛型枚举接口19.5 迭代器19.5.1 迭代器块19.5.2 使用迭代器来创建枚举器19.5.3 使用迭代器来创建可枚举类型 19.6 常见迭代器模式19.7 产生多个可枚举类型19.8 将迭代器作为属性19.9 迭代器的… 文章目录 19.1 枚举器和可枚举类型19.2 IEnumerator 接口19.3 IEnumerable 接口19.4 泛型枚举接口19.5 迭代器19.5.1 迭代器块19.5.2 使用迭代器来创建枚举器19.5.3 使用迭代器来创建可枚举类型 19.6 常见迭代器模式19.7 产生多个可枚举类型19.8 将迭代器作为属性19.9 迭代器的实质 19.1 枚举器和可枚举类型 使用 foreach 语句 ​ 下面是使用 foreach 语句遍历数组的示例。 ​ 数组可以使用这种方式访问的原因是数组提供了枚举器对象。枚举器知道数组中元素的次序并依次返回数组中的元素。 ​ 对于有枚举器的类型而言我们使用 GetEnumerator 方法来获取其拥有的枚举器实现该方法的类型称为可枚举类型。数组就是可枚举类型。 图19.1 枚举器和可枚举类型概览 ​ foreach 结构设计用来和可枚举类型一起使用如下行为会被执行 调用 GetEnumerator 方法获取对象的枚举器。从枚举起中请求每一项并作为迭代变量可读不可写。 19.2 IEnumerator 接口 ​ 实现了 IEnumerator 接口的枚举器包含 3 个函数成员 Current返回序列中当前位置项的属性。 为只读属性。返回 object 类型的引用。 MoveNext是将枚举器位置前进到集合中下一项的方法返回布尔值。 如果新的位置有效返回 true。如果新的位置无效返回 false。 Reset将位置重置为原始状态。 枚举器的原始位置在序列中的第一项之前因此 MoveNext 必须在第一次使用 Current 之前调用。 图19.2 小集合的枚举器 ​ 在编写 foreach 循环的时候C# 编译器将生成与下面十分类似的代码以 CIL 的形式。 图19.3 .NET 数组类实现了 IEnumerator 19.3 IEnumerable 接口 ​ 可枚举类是指实现了 IEnumerable 接口的类该接口只有一个成员——GetEnumerator返回对象的枚举器。 图19.4 GetEnumerator 方法返回类的一个枚举器对象 使用 IEnumerable 和 IEnumerator 的示例 19.4 泛型枚举接口 ​ 使用 C# 泛型和非泛型的方式相差不大。 对于非泛型接口形式 IEnumerable 接口的 GetEnumerator 方法返回实现 IEnumerator 的枚举器类实例。实现 IEnumerator 的类实现了 Current 属性返回 object 类型的引用然后将其转化为对象的实际类型。 对于泛型接口形式 IEnumerableT 接口的 GetEnumerator 方法返回实现 IEnumeratorT 的枚举器类实例。实现 IEnumeratorT 的类实现了 Current 属性返回实际类型的实例而不是 object 基类的引用。实际上泛型接口的声明是协变的即 IEnumerableout T 和 IEnumeratorout T因此这些接口的对象可以是派生的类型。 ​ 泛型版本简单易用但其结构略显复杂。 图19.5 实现 IEnumerableT 接口的类的结构 19.5 迭代器 ​ 可枚举类和枚举器在 .NET 集合类中被广泛使用从 C# 2.0 版本开始提供了创建枚举器和可枚举类型更简单的方式将这种结构称为迭代器。 ​ 在下面这个示例中 迭代器返回一个泛型枚举器该枚举器返回 3 个 string 类型的项。yield return 语句声明这是枚举中的下一项。 ​ 下面的方法声明了另一个版本输出结果与上面相同。 ​ 枚举器不会一次返回所有的元素而是每次访问 Current 属性时返回一个新值。 19.5.1 迭代器块 ​ 迭代器块是有一个或多个 yield 语句的代码块可以是如下任意一种代码块 方法主体。访问器主体。运算符主体。 ​ 迭代器块描述了希望编译器为我们创建的枚举器类的行为其中的代码描述了如何枚举元素。 yield return指定序列中要返回的下一项。yield break指定在序列中没有其他项。 ​ 编译器得到有关枚举项的描述后会构建包含所有需要的方法MoveNext和属性Current实现的枚举器类产生的类被嵌套包含在声明迭代器的类中。 图19.6 根据指定的返回类型可以让迭代器产生枚举器或可枚举类型 19.5.2 使用迭代器来创建枚举器 图中左边演示了返回类型是 IEnumeratorstring。图中右边演示了它有一个嵌套类实现了 IEnumeratorstring。 图19.7 迭代器块产生了枚举器 19.5.3 使用迭代器来创建可枚举类型 ​ 本节例子使用迭代器来创建可枚举类型而不是枚举器。 BlackAndWhite 迭代器方法返回 IEnumerablestring 而不是 IEnumeratorstring。MyClass 首先调用 BlackAndWhite 方法获取可枚举类型对象然后调用该对象的 GetEnumerator 方法来获取结果从而实现 GetEnumerator 方法。 图中左边演示了返回类型是 IEnumerablestring。图中右边演示了它有一个嵌套类实现了 IEnumeratorstring 和 IEnumerablestring。 图19.8 编译器生成的类是可枚举类型并返回一个枚举器。编译器还生成了方法 BlackAndWhite返回可枚举对象 19.6 常见迭代器模式 实现返回枚举器的迭代器。 通过实现 GetEnumerator 方法让类可枚举它返回由迭代器返回的枚举器。 实现返回可枚举类型的迭代器。 实现 GetEnumerator 来让类本身可枚举或不实现来让类不可枚举。 图19.9 常见的迭代器模式 19.7 产生多个可枚举类型 ​ Spectrum 类有两个可枚举类型的迭代器但类本身不可枚举因为没有实现 GetEnumerator 方法。 19.8 将迭代器作为属性 ​ 本示例演示两个方面的内容 使用迭代器产生两个枚举器的类。演示迭代器如何实现为属性而不是方法。 ​ 这段代码声明了两个属性来定义两个不同的枚举器。GetEnumerator 方法根据 _listFromUVtoIR 布尔变量的值返回两个枚举器中的一个。如果 _listFromUVtoIR 为 true则返回 UVtoIR 枚举器否则返回 IRtoUV 枚举器。 19.9 迭代器的实质 ​ 有关迭代器的其他重要事项 迭代器需要 System.Collections.Generic 命名空间因此需要使用 using 指令进行引入。在编译器生成的枚举器中不支持 Reset 方法。Reset 是接口需要的方法所以实现了它但调用时总是抛出 System.NotSupportedException 异常。 ​ 在后台编译器生成的枚举器类总是包含 4 个状态的状态机。 Before首次调用 MoveNext 的初始状态。Running调用 MoveNext 后进入这个状态。 枚举器检测并设置下一项的位置。遇到 yield return、 yield break 或在迭代器中结束时退出 Running 状态。 Suspended状态机等待下次调用 MoveNext 的状态。After没有更多项可以枚举的状态。 图19.10 迭代器状态机
http://www.yutouwan.com/news/377340/

相关文章:

  • 大理网站制作公司无锡网站制作有哪些
  • 加强网站政务服务建设方案政和网站建设wzjseo
  • 学校资源网站 建设厦门市建设局局长
  • 高端用户群浏览网站google地图 wordpress
  • 手机网站架构360提示的危险网站
  • 什么是网站静态化抚顺市 网站建设
  • wordpress 编辑首页wordpress 界面优化
  • 一级域名网站多少钱专业建设网站公司排名
  • 纯静态做企业网站东莞怎么制作网站
  • 做网站路径网站建设找祥赢
  • 天津人工智能建站系统软件公司邮箱申请注册
  • 成都网站建设seo什么是分类信息网站营销
  • 容桂网站建设wordpress 代替cms
  • 网站用的字体网站怎么创建论坛
  • 苏州专业网站建设公司自建网站百度
  • 怎么看网站的外链wordpress高亮代码转义
  • 虚拟主机怎么建网站网页制作专业服务
  • 郑州做网站zzmshl广州微网站建设dmz100
  • 绵阳低价网站建设承包企业管理系统
  • 山东平台网站建设公司黄骅贴吧最近发生的事
  • 丽水建设部门网站html5手机网站开发视频
  • 药材网网站技术建设做网站公司的出路
  • 制作一个网站需要多少时间网站架构布局
  • 哈尔滨做网站公司哪家好学做网站论坛教程
  • 小说网站怎么做原创佛山高端网站制作公司
  • 招聘网站开发源代码天津网站建设美丽
  • 做网站图片要求高吗百度用户服务中心电话
  • wordpress站群搭建wordpress log in
  • 兼职做页面的网站wordpress主题改字体颜色
  • 建设红外测温仪网站深圳横岗做网站