IEnumerator、IEnumerable的理解

Stata实战:RCS限制立方样条非线性关系建模与P值解读全攻略 本文详细介绍了在Stata中使用RCS限制立方样条进行非线性关系建模的全过程,包括数据准备、节点设置、COX回归模型构建、结果可视化及P值解读。通过乳腺癌临床数据实例,展示了如何捕捉年龄与死亡风险之间的复杂非线性关系,并提供了实用的Stata代码和图形优化技巧。 阅读详情

请直接看以下代码,用foreach来了解Ienumerator和IEnumerable的原理。

    class Program
    {
        static void Main(string[] args)
        {
            //1.
            int[] array_Int;
            array_Int = new int[] { 1, 3, 2 };
            foreach (int item in array_Int)
            {
                Console.WriteLine(item);
            }

            //2.
            int[] array_Int2;
            array_Int2 = new int[] { 11, 33, 22 };
            IEnumerator i = array_Int2.GetEnumerator();
            while(i.MoveNext())
            {
                Console.WriteLine((int)i.Current);
            }
            
            Console.ReadLine();
        }
    }

上述代码的两部分,输出结果是
1
3
2
11
33
22

这是因为ArrayList继承了IEnumerable接口,而IEnumerable内部存在一个方法,其返回值为IEnumerator。
源码如下:

    //使用大小会根据需要动态增加的数组来实现 System.Collections.IList 接口。
    public class ArrayList : IList, ICollection, IEnumerable, ICloneable
    {
    }
    //公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。
    public interface IEnumerable
    {
        // 摘要: 
        //     返回一个循环访问集合的枚举数。
        //
        // 返回结果: 
        //     一个可用于循环访问集合的 System.Collections.IEnumerator 对象。
        IEnumerator GetEnumerator();
    }
	//支持对非泛型集合的简单迭代。
    public interface IEnumerator
    {
        // 摘要: 
        //     获取集合中的当前元素。
        //
        // 返回结果: 
        //     集合中的当前元素。
        object Current { get; }

        // 摘要: 
        //     将枚举数推进到集合的下一个元素。
        //
        // 返回结果: 
        //     如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false。
        //
        // 异常: 
        //   System.InvalidOperationException:
        //     在创建了枚举数后集合被修改了。
        bool MoveNext();
        //
        // 摘要: 
        //     将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。
        //
        // 异常: 
        //   System.InvalidOperationException:
        //     在创建了枚举数后集合被修改了。
        void Reset();
    }

其中:
1、GetIEnumerator()负责获取枚举器。
2、MoveNext()负责让Current获取下一个值,并判断遍历是否结束。
3、Current负责返回当前指向的值。
4、Rest()负责重置枚举器的状态(在foreach中没有用到)

结论:
1、foreach其实是用来简化对可枚举元素(ArrayList、List等)的遍历代码。
2、亦可创建一个用于被遍历的类,通过实现IEnumerable接口和一个相关的IEnumerator枚举器来实现遍历功能。


C#迭代器(IEnumerator)与Unity3D协程(Coroutine) 的关系

【3】Ubuntu18.04下载与安装,以及中文输入法的安装 Ubuntu18.04下载与安装一、下载二、安装(在VMware 16 pro中安装Ubuntu18.04)三、Ubuntu中安装中文输入法1.检查 fcitx 框架2.安装输入法 一、下载 下载地址:Ubuntu Releases 往下拉,找到自己需要的安装版本(建议不要安装最新版,因为你在使用时候遇到的错误大多都是以前版本的,最新版本的,解决方案特别少) 我这里安装的是Ubuntu18.04 一般都是使用desktop版本的(desktop版和server版本的区别:请看这篇文章) 之后点击下载即 阅读详情

相关推荐

【Python Turtle合集】有趣好玩的代码当然要分享给大家啦~(皮卡丘、玫瑰花、小黄人......)

前言 🚀 作者 :“程序员梨子” 🚀 **文章简介 **:本篇文章主要是写了利用Turtle库绘制四种不一样的图案的小程序! 🚀 **文章源码免费获取 : 为了感谢每一个关注我的小可爱💓每篇文章的项目源码都是无 偿分享滴💓👇👇👇👇 点这里蓝色这行字体自取,需要什么源码记得说标题名字哈!私信我也可! 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 正文 今天给大家介绍一个好玩儿的库,嘻嘻! Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵

TZ45678的博客 3万+

C#中的IEnumerable、IEnumerator、Yield

IEnumerable/IEnumerator/Yield

m0_57527977的博客 7071

eNSP-交换机VLAN配置

VLAN

乌托托的博客 8806

IEnumerable和IEnumerator

IEnumerable和IEnumerable接口是.NET Framework中最基本的集合访问器。它定义了一组扩展方法,用来对数据集合中的元素进行遍历、过滤、排序、搜索等操作。它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单的迭代 IEnumerator:提供在普通集合中遍历的接口,有Current,MoveNext(),Reset(),其中Current返回的是object类型。 IEnumerator:继承自IEnumerator,有Current属性,返回的是T类型。 IEnu

weixin_43710479的博客 305

COMSOL仿真分析高压直流GIS/GIL绝缘性能优化

高压直流气体绝缘设备(GIS/GIL)的绝缘性能是保障电网可靠运行的关键。通过COMSOL Multiphysics多物理场仿真,可以深入分析气固界面电场分布与电荷积聚机理。该技术结合静电场、热场和电荷传输耦合计算,能准确模拟温度梯度对SF6气体与环氧树脂界面特性的影响。工程实践中,这类仿真可优化导体结构设计、改进绝缘材料配方,并建立电场-温度关联预警模型。特别是在80℃高温工况下,仿真显示界面电荷密度会显著增加23%,这对设备安全运行具有重要指导价值。

weixin_32075843的博客 192

11种图像清晰度评价函数附MATLAB代码

博主的第一篇博客! 本科毕业论文是“基于图像处理的自动对焦技术研究”,对焦过程中的一个重要阶段是图像清晰度评价,博主自己用MATLAB实现了4类清晰度评价函数:基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学评价函数,总计11种。博主之前没有用过MATLAB,完全是本科论文需要,没办法对着别人的代...

kungfu_rabbit的博客 5万+

IEnumerable和IEnumerator 详解

初学C#的时候,老是被IEnumerable、IEnumerator、ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质。 下面我们先看IEnumerable和IEnumerator两个接口的语法定义。其实IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集

Finder_Way 623

嵌入式Linux Qt应用程序卡死问题分析记录

根据应用和系统层面的分析,软件功能异常和卡死现象的原因是系统控制台/dev/console阻塞导致依赖其的相关应用和命令异常。系统控制台/dev/console阻塞的原因还未确定,最近的软件版本和其他测试同事未出现该问题,所以很大可能是串口线的问题,待后续有进展了继续更新。

V10_x的博客 1644

IEnumerable和IEnumerator详解

组成 从名字常来看,IEnumerator是枚举器的意思,IEnumerable是可枚举的意思。这两个都是个接口 接下来我们看一下IEnumerator和IEnumerable的源码 public interface IEnumerable { IEnumerator GetEnumerator(); } IEnumerable非常简单,就一个GetEn...

路漫漫其修远兮,吾将上下而求索 3511

PCL点云八叉树体素中心下采样,体素包含点索引提取

基于PCL octree实现点云八叉树计算,支持提取体素中心点进行点云下采样;根据任一点坐标,可以得到其在八叉树中的位置,输出对应体素内其余点的坐标或者索引

qq_48694523的博客 462

Python爬虫-爬取汽车之家各品牌周销量榜数据,进行数据分析

本文是该专栏的第57篇,后面会持续分享python爬虫干货知识。本文中,笔者已经整理20篇汽车平台相关的爬虫项目案例。对此感兴趣的同学,可以直接翻阅查看。同样,笔者在本文中将继续以汽车之家平台为例子。基于Python爬虫,实现批量爬取“各品牌周销量榜单”的数据。废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 365

理解 IEnumerable 与 IEnumerator

我们在编码中,经常使用foreach遍历集合,能够遍历的集合必定实现了 IEnumerator接口,IEnumerator接口如下: 1 public interface IEnumerator 2 { 3 // 方法 4 //移到集合的下一个元素。如果成功则返回为 true;如果超过集合结尾,则返回false。 5 bool MoveN...

weixin_33860528的博客 169

【以太网硬件十二】以太网端口自协商过程解密之二

简述以太网端口自协商的过程

highman110的博客 2488

C# IEnumerator和IEnumerable理解

IEnumerator和IEnumerable是 .NET内置的接口,用来为集合类添加遍历的功能。然而两者高在一起,让我刚开始学习时头痛不已。查看MSDN和网上资料后,将自己的收获整理下来:        看着两者的英文名,我们大概可以猜一下:            IEnumerable的实现标志该类具有了枚举的能力,并且在适当的时机可以返回迭代器。它比较重要的方法

Star丶Xing 1532

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

对IComparable,IComparer,IEnumerable,IEnumerator的理解

IComparable接口要实现CompareTo方法,并且一定要通过值可以排序的类型来实现,例如基本数值类型(整型等),或者字符串,看下面的代码可能易懂一点:public class Temperature : IComparable { protected double temperatureF; public int CompareTo(object obj) { if(obj is Temperature) { Temperature oth

zhang_ac2的专栏 569

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IEnumerable和IEnumerator的理解

IEnumerable和IEnumerator的理解 2010-08-17 15:59   在现实应用中,对于集合以及枚举这些集合的需求非常普遍, 因此在.NET中集合所依赖的接口被设计为公共的。想要实现对象的枚举就必须继承IEnumerable接口。 public interface IEnumerable {       pu

200

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

转载:IEnumerable和IEnumerator的理解

http://hi.baidu.com/ysuhy/blog/item/f0243e0f4174acea36d122a7.html 在现实应用中,对于集合以及枚举这些集合的需求非常普遍, 因此在.NET中集合所依赖的接口被设计为公共的。想要实现对象的枚举就必须继承IEnumerable接口。public interface IEnumerable{public I...

weixin_34248849的博客 252

对于c# IEnumerator、IEnumerable、yield的理解

先给出这两个接口的定义 public interface IEnumerable { IEnumerator GetEnumerator(); } public interface IEnumerator { object Current{get;} bool MoveNext(); void Reset(); } 下面给出使用这两个接口,使得一个类可以使用foreach遍历的例子 public class IterationSample : IEnumerable { object[]

qq_40742335的博客 280

集合类接口IEnumerable,IEnumerator,ICollection,IList,IDictionary理解

IEnumerator 该接口定义需要实现以下方法: Current:获取集合中的当前元素。 MoveNext:将枚举数推进到集合的下一个元素。 Reset: 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。 实现以上方法的类也就意味着这个集合类能够被遍历访问。 IEnumerable able意味着这个类能够达到上面IEnumerator的效果, 事实上也是...

weixin_33962923的博客 92

C# 中对 IEnumerable IEnumerator yield 的理解

前段时间 用C# 来写 Unity3D(一款游戏引擎) 中的行为脚本. 其中有一个非常重要的概念是"协同程序", 我的理解就是用来完成一系列的有先后顺序的操作.比如做为一个动画后.等上一段时间 再进行下一步操作. 它的好处在于 可以不影响当前的时间线类似于单开一个线程一样的来完成这个工作. 在Unity3D中完成协同程序的操作是这样的.用StartCoroutine(method...

weixin_30793643的博客 177

IEnumerable和IEnumerator的理解[原]

在现实应用中,对于集合以及枚举这些集合的需求非常普遍, 因此在.NET中集合所依赖的接口被设计为公共的。想要实现对象的枚举就必须继承IEnumerable接口。 public interface IEnumerable {       public IEnumerator GetEnumerator(); } 它只有一个成员:GetEnumerator方法。该方法返回一个世纪的枚举器(enumerator)对象。那么要定义一个枚举器就要必须实现IEnumrator接口: public in

双击的资料库 352

C#学习笔记--由浅至深理解IEnumerable和IEnumerator

C#学习笔记--由浅至深理解IEnumerable和IEnumerator

游戏码农一枚,不定时分享技术文章~ 1169

理解IEnumerator+IEnumerable这种接口思想

前言 本文不想过多篇幅来介绍IEnumerator和IEnumerable这两个接口的具体说明,只是把它作一个例子作引言而已,本文将根据自己的理解来描述微软为何要这样设计这种关联风格的接口。这种风格的接口还有IFormatProvider和IFormattable等等,总结这些所见,可简单描述为I[xx]er接口往往是用于定义[xx]业务方法,而I[xx]able定义一些方法,方法体的...

dengyou6178的博客 154
上一篇: Unity 限制四元数 旋转方向轴X.
下一篇: Unity 限制物体旋转角度的坑
假面骑士!
博客等级 码龄8年 24粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值