zoukankan      html  css  js  c++  java
  • 大话C#中能使用foreach的集合的实现

    大家都知道foreach的语法:
    foreach(var item in items)
    {
    Console.Writeln(item);
    }

    通过这样一个简单的语句,就能实现遍历集合items中的所有元素。
    那么,集合类(注意不是集合中的元素的类)是要满足什么条件才能用foreach遍历呢?
    就像买衣服需要去找到卖衣服的人一样,要使用foreach,集合类必须要实现GetEnumerator()方法。
    这里的GetEnumerator就相当于商城里的售货员,穿着统一的服装,任务就是买衣服(程序里的任务是实现遍历集合)。
    当然了,售货员可以是个体户,也就是说,你可以自己直接实现GetEnumerator()方法;也可以是某个公司统一培训上岗的(程序里就是
    实现了IEnumerable接口的。)只要是这个公司培训上岗的员工,一定是能够卖衣服。同理,只要实现了IEnumerable接口,就一定能够用
    foreach遍历!
    那么,实现了IEnumerable接口必然要重写GetEnumerator()方法。GetEnumerator()方法就让这个集合类获得了遍历的方法。
    而这个遍历的方法是有一定的共性的,比如,获取当前索引对应的元素(GetCurrent)啦, 移动到下一个元素啦(MoveNext)啦,等等等等。
    就好比买衣服培训一样,有一套统一的流程,大家卖衣服的流程都差不多(进货、上货、叫卖等等)。
    既然这么有共性,那么就给封装成一个IEnumerator接口吧,这个接口里就包括获取当前索引对应的元素(GetCurrent)啦, 移动到下一个
    元素(MoveNext)等等的方法,等待你去实现。这样,你只需要写一个实现了IEnumerator接口的类(假设是MyArrayEnumerator),构造函数里将你要写的集合类的
    元素集合传进去处理。那么你再在集合类的GetEnumerator()方法里写上 return new MyArrayEnumerator()即完成了遍历集合的“上岗培训”。

  • 相关阅读:
    python3 get/post/使用代理/自定义header/自定义Cookie
    网页定位点击事件js响应函数教程(Chrome)
    burpsuite只拦截特定网站数据包教程
    AWVS和AppScan使用代理进行扫描教程
    kdbg安装使用教程(kali)
    kali-rolling安装nessus 7并创建扫描任务教程
    WebGoat 8安装、配置、使用教程(CentOS)
    应用层协议与传输层、网络层、数据链路层在编码上的区别
    Oracle Linux下载教程(以Oracle Linux 6.9为例)
    su和su -的区别
  • 原文地址:https://www.cnblogs.com/tangzhengyue/p/3339936.html
Copyright © 2011-2022 走看看