public class Persons:IEnumerable
{
public Persons(string[] people)
{
this.people = people;
} public string[] people { set; get; }
public IEnumerator GetEnumerator()
{
return new PersonEnumable(people);
}
}
public class PersonEnumable : IEnumerator
{
public PersonEnumable(string[] people)
{
this.people = people;
}
private string[] people { set; get; }
private int index { set; get; } = -;
/// <summary>
/// 当前对象
/// </summary>
public object Current {
get {
if (index < || index > people.Length-)
return null;
else
return people[index];
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public bool MoveNext()
{
if (index < people.Length-)
{
index++;
return true;
}
return false;
} /// <summary>
///
/// </summary>
public void Reset()
{
index = -;
}
}
var strArr = new string[] { "科比", "詹姆斯", "杜兰特", "诺维茨基", "东契奇", "卢比奥" };
var persons = new Persons(strArr);
foreach (var t in persons)
{
Console.WriteLine(t);
}
//foreachq其实大概就是执行了这段代码,只是不知道是什么时候执行的Reset()
PersonEnumable personEnumable = new PersonEnumable(strArr);
while (personEnumable.MoveNext())
{
Console.WriteLine(personEnumable.Current);
}

运行结果如下

可以看出两次输出结果是一样的。

c# 是如何对一个可遍历对象实现遍历的的更多相关文章

  1. JS 遍历对象 jQuery遍历对象

    jquery for 循环遍历对象的属性: //对象的定义如下: var person={id:"1",name:"springok",age:25}; for ...

  2. vue - for 遍历对象和遍历对象数组

    1. 遍历对象时,参数: 第一个为值,第二个为键名,第三个为索引 <!DOCTYPE html> <html lang="en"> <head> ...

  3. runtime获取类名,遍历变量,遍历对象,遍历方法

  4. JS之对象数组遍历?

    一.js实现遍历对象 <script> ","destroy":"97%"}; var props = ""; for ...

  5. PHP对象的遍历

    对象的遍历 对象的遍历,跟数组的遍历,一样! 其实,只能遍历出对象的“实例属性数据” foreach( $对象名  as   $key => $value){ //这里就可以处理$key和$va ...

  6. java 数据类型:集合接口Collection之常用ArrayList;lambda表达式遍历;iterator遍历;forEachRemaining遍历;增强for遍历;removeIf批量操作集合元素(Predicate);

    java.util.Collection接口 Java的集合主要由两个接口派生出来,一个是Collection一个是Map,本章只记录Collection常用集合 集合只能存储引用类型数据,不能存储基 ...

  7. jquery遍历对象,数组,集合

    1.jquery 遍历对象 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTM ...

  8. JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)

    String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...

  9. Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序:Comparable)

    1. TreeSet存储自定义对象并遍历练习2: (1)Student.java package cn.itcast_06; /* * 如果一个类的元素要想能够进行自然排序,就必须实现自然排序接口 * ...

随机推荐

  1. 解决Powershell中不能运行脚本问题

    问题: powershell中不能执行脚本,提示‘because running scripts is disabled on this system’ 原因: powershell中默认的execu ...

  2. Spring数据分析思维课

    本文目录 一.杂 二.四大行业数据分析 1.工具 1.电商数据分析——以京东为例 2.sql常见问题   2.互联网金融——以芝麻信用为例 3.数据异常排查 3.游戏行业——以欢乐斗地主为例 4.融入 ...

  3. P4104 [HEOI2014]平衡

    友情提醒:取模太多真的会TLE!!! P4104 [HEOI2014]平衡 题解 本题属于 DP-整数划分 类问题中的 把整数 n 划分成 k 个不相同不大于 m 的正整数问题 设置DP状态  f[ ...

  4. centos 下启动 rabbitmq 报错的解决

    安装 rabbitmq 后进行了一些配置,然后启动服务: service rabbitmq-server start 无法启动.通过 journalctl -xe 查看日志后,有如下日志: ... - ...

  5. 如何配置git send-email相关的邮箱信息?

    关键是配置smtpserver,请参考此处

  6. flutter webview_flutter 设置cookies

    WebViewController _controller; onWebViewCreated: (WebViewController wvc) { _controller = wvc; } onPa ...

  7. HashMap ArrayList 和 List对象的转换

    public static void main(String[] args) { List list = new ArrayList<>(); HashMap map = new Hash ...

  8. 由DBCursor的“can't switch cursor access methods”异常引发的思考

    先谈谈我是怎么用的: DBCollection dbcollection = XXXXXXXXXX(); //连接mongo DBCursor dbCursor = mergeVideoDB.find ...

  9. Servlet 使Session设置失效

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletExcep ...

  10. PHP7 下安装 memcache 和 memcached 扩展

    转载自:https://www.jianshu.com/p/c06051207f6e Memcached 是高性能的分布式内存缓存服务器,而PHP memcache 和 memcached 都是 Me ...