博客
关于我
Unity学习笔记:IEnumerator、yield
阅读量:785 次
发布时间:2019-03-25

本文共 1257 字,大约阅读时间需要 4 分钟。

Unity学习笔记:C#中的IEnumerator 和 yield

在C#编程中,IEnumerator接口和yield关键字是绝对密不可少的概念,作为开发人员,我们应当深入理解它们的用法和特性。本文将从基础到应用详细阐述这两者以及它们在项目开发中的实际应用场景。

IEnumerator接口是C#中用来定义可迭代对象的标准。它实际上是一个迭代器接口,用于管理一个可读集合的元素序列。通过实现IEnumerator接口,一个对象就能向外部代码暴露成一个可遍历的资源。例如,在Unity项目中,我们常常需要遍历Assetuntos或某些自定义数据集合,这时候IEnumerator就派上用场了。

与IEnumerable类似,IEnumerator提供了两个主要方法:

  • public int Current { get; }
  • public bool MoveNext();
  • Current属性用于获取当前元素,MoveNext方法则用作遍历下一个元素的操作点。通过调用MoveNext()方法,我们可以逐个获取可迭代资源中的元素,再通过Current属性获取具体的值。这种设计让开发者能够轻松地在代码中迭代各种数据序列,例如string、List

    或自定义类集合等等。

    而yield关键字,则是C#中用来定义迭代器的一种简洁方式。它允许开发者用一种声明性方式明确哪部分代码会生成迭代资源。在 흐连符号前后,写出代码块会被编译器自动转换成IEnumerator的实现类。比如:

    IEnumerator GetPlayers() {    yield return "Player1";    yield return "Player2";}

    这样的代码会生成一个IEnumerator接口的实现类,返回的IEnumerator对象可以被依次读取"Player1"和"Player2"这两个值提示。这在项目中非常有用,特别是在需要频繁重用或者在界面上循环显示数据的时候。

    需要注意的是,不同于传统的写法,使用yield关键字的函数将返回IEnumertor类型,而不是直接返回集合本身。这点在接收端也需要特别注意,如果错误地使用它作为集合资源,可能会导致运行时错误。因此,在实际应用中,建议先检查返回值是否为IEnumerator类型,再根据具体需求进行处理。

    在Unity项目中,这些概念尤为重要。例如,在AssetBundle的管理中,我们常常需要以迭代的方式加载或卸载资源。通过IEnumerator和yield,我们可以创建更高效的资源管理机制,减少代码冗余,提升运行效率。另外,在游戏自定义UI系统实现时,也需要利用IEnumerator和yield来实现动态数据的迭代和更新。

    总结来说,IEnumerator和yield是C#中极为实用的工具,它们不仅允许开发者轻松地管理数据迭代,还为代码编写提供了一种更加灵活和可读的方式。在编写Unity项目时,掌握它们的用法和特点,将有助于开发更高效、更优质的代码。

    转载地址:http://bytuk.baihongyu.com/

    你可能感兴趣的文章
    Neo私链
    查看>>
    nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
    查看>>
    Nessus漏洞扫描教程之配置Nessus
    查看>>
    Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
    查看>>
    nestJS学习
    查看>>
    NetApp凭借领先的混合云数据与服务把握数字化转型机遇
    查看>>
    NetBeans IDE8.0需要JDK1.7及以上版本
    查看>>
    netbeans生成的maven工程没有web.xml文件 如何新建
    查看>>
    netcat的端口转发功能的实现
    查看>>
    netfilter应用场景
    查看>>
    netlink2.6.32内核实现源码
    查看>>
    Netpas:不一样的SD-WAN+ 保障网络通讯品质
    查看>>
    NetScaler的常用配置
    查看>>
    netsh advfirewall
    查看>>
    NETSH WINSOCK RESET这条命令的含义和作用?
    查看>>
    Netstat端口占用情况
    查看>>
    Netty WebSocket客户端
    查看>>
    netty 主要组件+黏包半包+rpc框架+源码透析
    查看>>
    Netty 异步任务调度与异步线程池
    查看>>
    Netty中集成Protobuf实现Java对象数据传递
    查看>>