【c#每日一记】所以迭代器的原理知识你还清楚吗?

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

【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)思维导图总结


【c#每日一记】所以迭代器的原理知识你还清楚吗?


🎶(D)实践练习


【c#每日一记】所以迭代器的原理知识你还清楚吗?

  • 实践经验

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

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


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

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

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

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

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


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


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


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

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

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

相关文章

  • 【游戏开发算法每日一记】使用随机prime算法生成错综复杂效果的迷宫(C#,C++和Unity版)

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 1.首先全部判定为墙,最外的为路包裹墙( 类似于防止数组越界 ) 2.红色为它的检测范围(假设检测点在如图所示的位置)—

    2024年02月05日
    浏览(43)
  • c++--反向迭代器的实现

    1.反向迭代器 迭代器有两种,一种是正向的,一种是反向的,方向迭代器的主要功能就是实现数据的反向访问,通过正向迭代器的适配生成的,适配器就是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一

    2024年02月16日
    浏览(44)
  • 【C++】反向迭代器的设计

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

    2024年02月02日
    浏览(42)
  • 【unity每日一记】transform类精华之珠

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

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

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

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

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

    2024年02月15日
    浏览(51)
  • 【Unity每日一记】资源加载相关你掌握多少?

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年02月12日
    浏览(41)
  • 【Unity每日一记】资源加载相关和检测相关

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年02月07日
    浏览(46)
  • 【Unity每日一记】SceneManager场景资源动态加载

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年02月12日
    浏览(44)
  • 【unity每日一记】资源和场景加载图文详解

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月10日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包