yield return;yield break;return;break区别

2024-05-08 11:08
文章标签 区别 return break yield

本文主要是介绍yield return;yield break;return;break区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


  1. MS设计的初衷是在迭代器中使用yield return来返回值,用yield break来结束迭代器,所以在迭代器中不应该使用return或break
  2. 各项区别

  • yield break & return
  • 迭代器中的yield break想当于普通方法中使用的return,直接终止方法(不仅仅只是终止循环,是终止整个方法),而不执行yield break后面的语句。但是yield break和return的区别是,yield break返回一个不为null,但是count为0的IEnumerable集合,但是return 只能返回return null,return null会造成使用者在使用该返回值时抛出空引用异常。实验发现,在迭代器中应用return null,直接编译不通过(VS2017)

  • yield break & break
  • yield break和break的区别是:
    yield break是跳出所有循环,直接终止方法,而break是只跳出一层循环,后面的方法仍要执行。

    static List<int> items = new List<int>() { 1, 3, 5, 6, 7 };
    static public IEnumerable<int> BuildMyCollection()
    {for (int i = 0; i < items.Count(); i++){if (i >= 2){//yield break;break;}Console.WriteLine(i);yield return items[i];}//只有使用break时,才会打印下面的语句Console.WriteLine("You used break.");yield return 10;
    }

    这篇关于yield return;yield break;return;break区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/970144

    相关文章

    Vue和React受控组件的区别小结

    《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

    Go之errors.New和fmt.Errorf 的区别小结

    《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

    Redis中哨兵机制和集群的区别及说明

    《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

    Python中yield的用法和实际应用示例

    《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

    一文带你迅速搞懂路由器/交换机/光猫三者概念区别

    《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

    redis和redission分布式锁原理及区别说明

    《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

    Python yield与yield from的简单使用方式

    《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

    JAVA覆盖和重写的区别及说明

    《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

    C++中全局变量和局部变量的区别

    《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

    MyBatis中$与#的区别解析

    《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会