广告
返回顶部
首页 > 资讯 > 精选 >C# 中怎么利用Iterator实现迭代器模式
  • 414
分享到

C# 中怎么利用Iterator实现迭代器模式

2023-06-18 00:06:38 414人浏览 八月长安
摘要

本篇文章给大家分享的是有关C# 中怎么利用Iterator实现迭代器模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C# Iterator迭代器模式我们在平时的开发中应该经常

本篇文章给大家分享的是有关C# 中怎么利用Iterator实现迭代器模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

C# Iterator迭代器模式我们在平时的开发中应该经常用到。不直接使用也会间接使用,我们使用foreach语句来循环就是在间接的使用C# Iterator迭代器模式。

迭代器就像指针一样可以向前向后移动,在.net中迭代器只能向后移动。

动机:在软件的构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“同一种算法在多种集合对象上进行操作”提供了可能。使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式。

意图:提供一种方法顺序访问一个集合对象中的各个元素,而不暴露该对象的内部表示。

public interface IEnumerable{  //得到迭代器  IEnumerator GetEnumerator();  }  /// <summary> /// 迭代器接口  /// summary> public interface IEnumerator{  //得到当前的对象  object Current{  get;  }  bool MoveNext();  void Reset();  }  /// <summary> /// 集合类型,实现了可迭代接口  /// summary> public class MyCollection : IEnumerable{  internal int[] items;  public MyCollection(){  items = new int[5] {1, 2, 3, 4, 5};  }  #region IEnumerable 成员  //实现迭代接口,返回迭代器  public IEnumerator GetEnumerator(){  //在这里进行解藕,将集合对象转换为迭代器  return new MyEnumerator(this);  }  #endregion  }  //迭代器对象,实现了迭代器接口  internal class MyEnumerator : IEnumerator{  private int nIndex;  MyCollection collection;   //构造函数将集合类型转换成内部成员  public MyEnumerator(MyCollection coll){  this.collection = coll;  nIndex = -1;  }  #region IEnumerator 成员  //返回当前迭代到的对象  public object Current{  get{  return collection.items[nIndex];  }  }  //移动到下一个对象,指针向后移动  public bool MoveNext(){  nIndex++;  return (nIndex < collection.items.GetLength(0));  }  //重设迭代器,指针回零  public void Reset(){  nIndex = -1;  }  #endregion  }

很清楚,在上面的代码中,我们通过GetEnumerator方法,将集合对象转换为了可迭代对象,这实际上是在对集合对象进行抽象,将他转换为迭代器。在这里,我们需要定义一个迭代器类,但是这是.NET 1.1中的做法,在.NET 2.0以后实现一个可迭代模式更加简单。

/// <summary> /// 集合类型,实现了可迭代接口  /// summary> public class MyCollection : IEnumerable<int> {  internal int[] items;   public MyCollection()  {  items = new int[5] {1, 2, 3, 4, 5};  }   #region IEnumerable<int> 成员   public IEnumerator<int> GetEnumerator()  {  for(int i = 0; i < items.Length; i++)  {  yield return items[i];  }  }  #endregion   #region IEnumerable 成员   System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()  {  for(int i = 0; i < items.Length; i++)  {  yield return items[i];  }  }   #endregion  }

我们通过yield return关键字来返回一个IEnumerator接口,这个关键在在编译之后会自动生成对应的迭代器的代码。

在.NET中迭代器只能先前,在c++中可以向后等其他操作。

注意:在迭代的过程中,我们不能向集合添加内容,后移除集合里的item,这样将会导致一些问题的出现。以上介绍C# Iterator迭代器模式。

以上就是C# 中怎么利用Iterator实现迭代器模式,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: C# 中怎么利用Iterator实现迭代器模式

本文链接: https://www.lsjlt.com/news/294862.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C# 中怎么利用Iterator实现迭代器模式
    本篇文章给大家分享的是有关C# 中怎么利用Iterator实现迭代器模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C# Iterator迭代器模式我们在平时的开发中应该经常...
    99+
    2023-06-18
  • C++迭代器iterator怎么使用
    C++迭代器(iterator)是一种用于访问容器中元素的对象,可以用来遍历容器中的元素,或者修改容器中的元素。首先,你需要在代码中...
    99+
    2023-08-15
    C++ iterator
  • C#中怎么实现迭代器模式
    这篇文章将为大家详细讲解有关C#中怎么实现迭代器模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在我们的应用程序中常常有这样一些数据结构:它们是一个数据的集合,如果你知道它们内部的实现结构...
    99+
    2023-06-17
  • 使用Java怎么实现一个Iterator迭代器
    这期内容当中小编将会给大家带来有关使用Java怎么实现一个Iterator迭代器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。package me.socketthread;import&nbs...
    99+
    2023-05-30
    java iterator
  • C#设计模式实现之迭代器模式
    目录前言:一、餐馆合并菜单 二、改进菜单实现 三、迭代器模式 总结前言: 迭代器模式平时用的不多,因为不管C#还是Java都已经帮我封装了,但是你是否知道平时经常在用的东西本质是怎么...
    99+
    2022-11-12
  • PHP设计模式之迭代器模式怎么实现
    本篇内容主要讲解“PHP设计模式之迭代器模式怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP设计模式之迭代器模式怎么实现”吧!迭代器模式迭代器模式(Iterator Pattern)...
    99+
    2023-07-05
  • C++中怎么利用LeetCode实现二叉搜索树迭代器
    C++中怎么利用LeetCode实现二叉搜索树迭代器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。[LeetCode] 173.Binary Search Tr...
    99+
    2023-06-20
  • python中怎么利用class类实现可迭代
    今天就跟大家聊聊有关python中怎么利用class类实现可迭代,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 当定义一个普通的类时,指向类的实例默认情况下是不可迭代的,如下In&n...
    99+
    2023-06-01
  • 迭代器模式如何在java项目中实现
    迭代器模式如何在java项目中实现 ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java 迭代器模式实例详解首先,为什么使用迭代器模式,目的就是通过一个通用的迭代方法,隐...
    99+
    2023-05-31
    java 迭代器模式 ava
  • 怎么在python中利用reversed实现反向迭代
    今天就跟大家聊聊有关怎么在python中利用reversed实现反向迭代,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发...
    99+
    2023-06-14
  • 怎么在java中利用二分查找实现迭代
    怎么在java中利用二分查找实现迭代?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统...
    99+
    2023-06-14
  • 怎么利用Matlab实现迭代适应点算法
    本篇内容主要讲解“怎么利用Matlab实现迭代适应点算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Matlab实现迭代适应点算法”吧!道格拉斯-普克算法(Douglas&nd...
    99+
    2023-06-29
  • 怎么解析C++ 的STL迭代器原理和实现
    怎么解析C++ 的STL迭代器原理和实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 迭代器简介为了提高C++编程的效率,STL(Standar...
    99+
    2023-06-26
  • C++中怎么实现单件模式
    C++中怎么实现单件模式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++单件模式代码示例:class Singleton  {...
    99+
    2023-06-17
  • C++利用代理模式实现远程代理,虚拟代理和保护代理
    目录一、代理模式基础介绍1.1 基础1.2 代码示例二、远程代理(Remote proxy)三、虚拟代理(Virtual Proxy)四、保护代理(Protective Proxy)...
    99+
    2023-05-18
    C++代理模式实现远程代理 C++代理模式实现虚拟代理 C++代理模式实现保护代理 C++代理模式
  • Python中的迭代器模式和生成器模式的适用场景是什么?
    Python中的迭代器模式和生成器模式的适用场景是什么?迭代器模式和生成器模式是两种常用的设计模式,它们都用于处理集合(容器)中的元素,使得对集合的遍历更加简洁高效。下面将具体介绍这两种模式的适用场景,并提供相应的代码示例。迭代器模式是一种...
    99+
    2023-10-22
    迭代器模式 适用场景 生成器模式
  • C++中的工厂模式怎么实现
    这篇文章主要讲解了“C++中的工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的工厂模式怎么实现”吧!工厂模式中使用了多态的原理,来将具体实现和接口进行有效的解耦合,符...
    99+
    2023-06-04
  • C++中的策略模式怎么实现
    本文小编为大家详细介绍“C++中的策略模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中的策略模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。策略模式主要解决在有多种算法相似的情况下,...
    99+
    2023-07-05
  • 怎么用C语言实现POOO模式
    这篇文章主要介绍了怎么用C语言实现POOO模式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用C语言实现POOO模式文章都会有所收获,下面我们一起来看看吧。MyNotes工...
    99+
    2022-10-19
  • C#中对象状态模式怎么实现
    这篇文章主要介绍了C#中对象状态模式怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中对象状态模式怎么实现文章都会有所收获,下面我们一起来看看吧。定义枚举表示教程进度首先用一个枚举,表示教程进行的不同...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作