zoukankan      html  css  js  c++  java
  • C#之枚举器和可枚举类型

    承接上文

    首先明确下枚举含义:一个一个地举出来。

    再来明确这几个单词的含义:

     1、什么是可枚举类型       

     可枚举类型是带有GetEnumerator方法的类型,不一定是类也有可能是数组,接口,它返回一个枚举器。
    就是说你声明了一个类吧,可以"点"出来这个GetEnumerator()这个方法,那这个类就是可枚举类型,就是可以一个个的将值列举出来

    2、什么是枚举器       

     枚举器是可以依次返回集合中项的对象,获取一个枚举器的方法是调用对象的GetEnumerator的方法,
     简单理解枚举器就是GetEnumerator方法返回的实例,这个方法的返回的实例类型可以有很多种;
     例如我们使用foreach语句遍历数组中的内容时,我们可以依次取出数组中的每一个元素,
     读取它的值,为什么数组可以这么做?
     因为数组提供了一个枚举器对象,
     枚举器可以依次返回请求的数组中的元素

    3、枚举器和foreach语句一起使用

     4、IEnumerator接口

      

    IEnumerator接口是所有非泛型枚举器的基接口(即GetEnumerator方法返回实例类型如果是非泛型,则返回实例类型全部继承自IEnumerator接口).
    IEnumerator
    <T>接口是所有泛型枚举器的基接口
    IEnumerator接口的枚举器(GetEnumerator方法返回的实例类型是IEnumerator接口) 包含三个函数成员:Current、MoveNext以及Reset,复杂了解即可,直接通过foreach语句遍历

     

     

     原文地址

    int[] array = new int[] { 1, 2, 3, 4 };
    var num = array.GetEnumerator();
    
    List<int> list = new List<int> { 1, 2, 3, 4 };
    var snum = list.GetEnumerator();
    
    ICollection<Object> vs = new List<Object> { 1, 2, "3", 4, 5, 6 };
    var Enumable = vs.AsEnumerable();
    var query = vs.AsQueryable();
    var query2 = vs.AsQueryable<object>();
    foreach (var item in query2)
    {
      string c = item.ToString();
    }
    
    Hashtable ht = new Hashtable();
    ht.Add(1, "A");
    ht.Add(2, "B");
    ht.Add(3, "c");           
    
    foreach (DictionaryEntry item in ht)
    {
      var str = item.Key;
    }
    人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。
  • 相关阅读:
    JVM运行时数据区及对象在内存中初始化的过程
    一文搞懂List 、List<Object>、List<?>的区别以及<? extends T>与<? super T>的区别
    Java中创建泛型数组
    JavaBean详解
    Java常用命令及参数
    一文彻底搞懂Java中的环境变量
    类型信息
    java中的数组
    URL与URI的区别
    上行速率和下行速率
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/14688203.html
Copyright © 2011-2022 走看看