博客
关于我
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/

    你可能感兴趣的文章
    Mysql学习总结(36)——Mysql查询优化
    查看>>
    Mysql学习总结(37)——Mysql Limit 分页查询优化
    查看>>
    Mysql学习总结(38)——21条MySql性能优化经验
    查看>>
    Mysql学习总结(39)——49条MySql语句优化技巧
    查看>>
    Mysql学习总结(3)——MySql语句大全:创建、授权、查询、修改等
    查看>>
    Mysql学习总结(40)——MySql之Select用法汇总
    查看>>
    Mysql学习总结(41)——MySql数据库基本语句再体会
    查看>>
    Mysql学习总结(42)——MySql常用脚本大全
    查看>>
    Mysql学习总结(43)——MySQL主从复制详细配置
    查看>>
    Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
    查看>>
    Mysql学习总结(45)——Mysql视图和事务
    查看>>
    Mysql学习总结(46)——8种常被忽视的SQL错误用法
    查看>>
    Mysql学习总结(48)——MySql的日志与备份还原
    查看>>
    Mysql学习总结(49)——从开发规范、选型、拆分到减压
    查看>>
    Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
    查看>>
    Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
    查看>>
    Mysql学习总结(51)——Linux主机Mysql数据库自动备份
    查看>>
    Mysql学习总结(52)——最全面的MySQL 索引详解
    查看>>
    Mysql学习总结(53)——使用MySql开发的Java开发者规范
    查看>>
    Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
    查看>>