博客
关于我
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 中日志的面试题总结
    查看>>
    MySQL 中随机抽样:order by rand limit 的替代方案
    查看>>
    MySQL 为什么需要两阶段提交?
    查看>>
    mysql 为某个字段的值加前缀、去掉前缀
    查看>>
    mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
    查看>>
    mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
    查看>>
    mysql 主键重复则覆盖_数据库主键不能重复
    查看>>
    Mysql 优化 or
    查看>>
    mysql 优化器 key_mysql – 选择*和查询优化器
    查看>>
    MySQL 优化:Explain 执行计划详解
    查看>>
    Mysql 会导致锁表的语法
    查看>>
    mysql 使用sql文件恢复数据库
    查看>>
    mysql 修改默认字符集为utf8
    查看>>
    Mysql 共享锁
    查看>>
    MySQL 内核深度优化
    查看>>
    mysql 内连接、自然连接、外连接的区别
    查看>>
    mysql 写入慢优化
    查看>>
    mysql 分组统计SQL语句
    查看>>
    Mysql 分页
    查看>>
    Mysql 分页语句 Limit原理
    查看>>