博客
关于我
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 - ERROR 1406
    查看>>
    mysql - 视图
    查看>>
    MySQL - 解读MySQL事务与锁机制
    查看>>
    MTTR、MTBF、MTTF的大白话理解
    查看>>
    mt_rand
    查看>>
    mysql -存储过程
    查看>>
    mysql /*! 50100 ... */ 条件编译
    查看>>
    mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
    查看>>
    mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
    查看>>
    mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
    查看>>
    mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
    查看>>
    MySQL 8.0 恢复孤立文件每表ibd文件
    查看>>
    MySQL 8.0开始Group by不再排序
    查看>>
    mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
    查看>>
    multi swiper bug solution
    查看>>
    MySQL Binlog 日志监听与 Spring 集成实战
    查看>>
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>