首页 > 代码库 > return 与 yield return 的区别

return 与 yield return 的区别

昨晚虽睡得不怎么样,今天居然有点儿“顿悟”的感觉。

yield似乎在枚举器里看过,但没什么印象了,各种搜索一通,很多是转的,还长篇大论的很多文字,不知怎么有不想看下去的感觉,喝了杯咖啡,抬头看着屏幕,突然觉得我也顿悟了:

不同点总结如下:

  1) 返回值类型不同:

      a)   return 返回其后面表达式的值可以是任何类型,暂称其为T类型;

      b)   而yield return 返回IEnumerable<T>类型,总是个可枚举的对象,yield return 后面的表达式为T类型。

        那么如何构成可枚举对象呢?就看yield return 语句执行多少次,执行多少次最终的可枚举对象就有多少个元素,怎么执行多少次我想不用我说了,比如循环,甚至简单的复制几遍。要说明的是每个yield return 后的表达式应该是相同或相兼容的类型,都为T类型。

  2)程序控制流程不同:

      a)  return 语句使方法返回,后面再有语句都不执行了。

                 b)  yield return 则不会使方法返回,继续执行后面的语句,只是计算记录最终返回的可枚举对象的一个元素值。

以上,是个人观点和总结,如有疏漏错误之处,欢迎批评指正。