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;
}
复制代码

 

posted @   ProZkb  阅读(467)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· spring官宣接入deepseek,真的太香了~
历史上的今天:
2018-04-22 Redis的安装与启动(doc和本地客户端)
点击右上角即可分享
微信分享提示