【unity之c#】所以迭代器的原理知识你还清楚吗?

这篇具有很好参考价值的文章主要介绍了【unity之c#】所以迭代器的原理知识你还清楚吗?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【unity之c#】所以迭代器的原理知识你还清楚吗?


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unityc#专题

⭐🅰️系统路线学习点击跳转⭐


⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇)

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


⭐迭代器原理⭐




🎶(A)自定义标准迭代器原理


步骤:

  • 1.继承两个关键接口:
    IEnumerable , IEnumerator
    (关键的是两个接口里面的方法)
  • 2.给继承后的几个成员添加逻辑
    IEnumerabale GetEnumerable()
    object Current
    bool MoveNext()
    Reset()
  • 3.目的为使得foreach能够调用到各个元素
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _迭代器
{
    class DDQ : IEnumerable, IEnumerator
    {
        int[] arrary;
        int curionPosition ;

        public DDQ()
        {
            arrary = new int[] { 1, 2, 3, 4, 5, 6 };
        }

        public IEnumerator GetEnumerator()
        {
            Reset();
            return this;
        }

          //使用foreach的时候会自动调用 Current属性来返回值
        public object Current
        {
            get
            {
                return arrary[curionPosition];
            }
        }

        public bool MoveNext()
        {
            curionPosition++;
            //当光标位置小于数组长度时返回true
            return curionPosition < arrary .Length ;
        }

           //重置光标的作用
        public void Reset()
        {
            curionPosition = -1;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DDQ ddq = new DDQ();
            foreach (int item in ddq)
            {
                Console.WriteLine(item);
            }
        }
    }
}


🎶(B)yield return 语法糖实现


  • 1.作用:
    将复杂逻辑简单化,增加可读性

  • 2.只需继承一个接口: IEnumerable

(所以 yield return 和IEnumrable配套使用)

  • 直接省去了IEnumreable接口下的几个成员方法,一步到位
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _迭代器
{
    class DDQ : IEnumerable
    {
        int[] arrary;
        public DDQ()
        {
            arrary = new int[] { 1, 2, 3, 4, 5, 6 };
        }

        public IEnumerator GetEnumerator()
        {
            for (int i = 0; i < arrary.Length; i++)
            {
                yield return arrary[i]; //直接省去了IEnumreable接口下的几个成员方法,一步到位
            }
        
        }

   
    }
    class Program
    {
        static void Main(string[] args)
        {
            DDQ ddq = new DDQ();
            foreach (int item in ddq)
            {
                Console.WriteLine(item);
            }
        }
    }
}


🎶(c)思维导图总结


【unity之c#】所以迭代器的原理知识你还清楚吗?


🎶(D)实践练习


【unity之c#】所以迭代器的原理知识你还清楚吗?

  • 实践经验

    所以如果要使自定义的类能够使用foreach遍历,就需要继承迭代器接口通过两个方法实现:
    1.自定义迭代器实现
    2.语法糖yeild return 实现

⭐🅰️系统路线学习点击跳转⭐


⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇)

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


【unity之c#】所以迭代器的原理知识你还清楚吗?文章来源地址https://www.toymoban.com/news/detail-471579.html


到了这里,关于【unity之c#】所以迭代器的原理知识你还清楚吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】反向迭代器的设计

    + 前言 STL中不少的容器需要有迭代器这样的设计, 特别是正向迭代器,几乎每个容器都有自己的特定实现方式 ,有了正向迭代器之后,我们还要提供反向迭代器以供一些特殊的需求,但是许多容器的正向迭代器实现的方式不一样,如果我们要实现其反向迭代器,每个容器的

    2024年02月02日
    浏览(42)
  • 【C++】STL——反向迭代器的模拟实现:迭代器适配器

    反向迭代器的使用相信大家都已经比较熟悉了,那我们这篇文章具体讲什么呢? 🆗,这篇文章我们重点来讲一下 反向迭代器的模拟实现 。 那为什么我们之前不和正向迭代器放在一块讲呢?为什么要等到我们讲完了容器适配器再来讲反向迭代器的模拟实现呢? 那这个问题我

    2024年02月08日
    浏览(41)
  • C++ stl迭代器的理解

    首先,stl采用了泛型编程,分成了容器和算法,容器和算法之间的桥梁是迭代器,迭代器的作用是可以让算法不区分容器来作用在数据上。 迭代器本质上是指针,原有类型(比如int,double等)的指针也可以是迭代器,那如何让代码区分开他们呢? 我们可以把自定义的迭代器包

    2024年02月15日
    浏览(51)
  • C++ 反向迭代器的设计与实现

    在本文开始之前,先明晰几个 的含义(T : 模板参数): Ref : T / const T Ptr : T* / const T* 一、反向迭代器设计的上帝视角 我们希望将 反向迭代器 设计成一种适配器——传 list::iterator 得到 list 的反向迭代器,传 vector::iterator 得到 vector 的反向迭代器。 STL 中,(正向)迭

    2024年03月15日
    浏览(62)
  • [ C++ ] STL---反向迭代器的模拟实现

    目录 前言: 反向迭代器简介 list反向迭代器的模拟实现  反向迭代器的模拟实现(适配器模式) SGI版本STL反向迭代器源码 STL库中解引用操作与出口设计 适配list的反向迭代器 适配vector的反向迭代器 反向迭代器 是一种特殊类型的迭代器,它可以 逆向遍历容器中的元素 ,与正向

    2024年04月15日
    浏览(39)
  • C++与JAVA中迭代器的不同

     C++的迭代器如同指针一样,从容器(vector举例)开头,一直指向容器 最后一位的后一位置。 JAVA的迭代器则指在 容器的空隙间 ,如下图所示。 如果找不到下一个元素(无元素可越),next就会抛出异常,因此,先通过hasNext判断有无下一个元素。

    2024年02月12日
    浏览(35)
  • [C++历练之路]优先级队列||反向迭代器的模拟实现

    W...Y的主页 😊  代码仓库分享💕 🍔前言: 在C++的宇宙中,优先队列似乎是一座巨大的宝库,藏匿着算法的珍宝。而就在这片代码的天空下,我们不仅可以探索优先队列的神奇,还能够揭开反向迭代器的神秘面纱。让我们一同踏入这个编程的探险之旅,在这里,我们将用C

    2024年02月04日
    浏览(51)
  • Python黑魔法:探秘生成器和迭代器的神奇力量

    在Python中,生成器和迭代器是实现惰性计算的两种重要工具,它们可以帮助我们更有效地处理数据,特别是在处理大数据集时,可以显著减少内存的使用。接下来,我们将详细介绍这两种工具。 迭代器是一种特殊的对象,它可以遍历一个集合中的所有元素。任何实现了__ite

    2024年02月12日
    浏览(50)
  • Python迭代器的__iter__和__next__详细教程

    在 Python 中,迭代器是一个实现了 __iter__ 和 __next__ 方法的对象。 __iter__ 方法返回迭代器对象自身,而 __next__ 方法返回下一个元素。换句话说,迭代器是一个可以逐个返回元素的对象。 下面是一个简单的迭代器示例,演示了如何实现 __iter__ 和 __next__ 方法: 该迭代器可以生成

    2024年02月13日
    浏览(45)
  • 【C++】反向迭代器的模拟实现通用(可运用于vector,string,list等模拟容器)

    🌏博客主页: 主页 🔖系列专栏: C++ ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 我们要写出一个通用的反向迭代器模拟而且在保证代码简介不繁琐的的情况下,一定程度上使用我们自己模拟的已经封装好的iterator迭代器可以简化许多步骤,首先我们要知

    2024年02月14日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包