昨晚虽睡得不怎么样,今天居然有点儿“顿悟”的感觉。
yield似乎在枚举器里看过,但没什么印象了,各种搜索一通,很多是转的,还长篇大论的很多文字,不知怎么有不想看下去的感觉,喝了杯咖啡,抬头看着屏幕,突然觉得我也顿悟了:
不同点总结如下:
1) 返回值类型不同:
a) return 返回其后面表达式的值可以是任何类型,暂称其为T类型;
b) 而yield return 返回IEnumerable<T>类型,总是个可枚举的对象,yield return
后面的表达式为T类型。
那么如何构成可枚举对象呢?就看yield return
语句执行多少次,执行多少次最终的可枚举对象就有多少个元素,怎么执行多少次我想不用我说了,比如循环,甚至简单的复制几遍。要说明的是每个yield return
后的表达式应该是相同或相兼容的类型,都为T类型。
2)程序控制流程不同:
a) return 语句使方法返回,后面再有语句都不执行了。
b) yield return 则不会使方法返回,继续执行后面的语句,只是计算记录最终返回的可枚举对象的一个元素值。
以上,是个人观点和总结,如有疏漏错误之处,欢迎批评指正。
时间: 2024-10-10 04:51:30