在什么情况下会用field比较方便?

来源:百度知道 编辑:UC知道 时间:2024/06/30 07:59:32
初学C#,看了几个迭代器的例子,基本了解了yield return()函数的用法,有点不明白的是什么情况下用它?感觉用for循环或是C#直接提供的foreach循环就能满足一般需要啊,yield有什么特别的优点吗?在什么情况下用它比较合适?

问题你打错了

yield是用来快速提供枚举器的,通常能用在foreach循环中的对象都要实现IEnumerable,那么IEnumerable需要实现类提供一个IEnumerator的实现,通常类都会提供自己的实现类,但是呢在快速开发中这种实现非常慢,而且容易出bug,所以C#2.0引入了快速迭代器的语法,帮助实现者快速安全完美的实现一个迭代器而不需要经过复杂的测试保证设计万无一失。

除非需要特别的考虑,比如要对迭代器进行特殊操作或者相互沟通的话,一般建议使用快速方法实现迭代器,对于初学者来说也很有用。

如果你不理解迭代器是如何实现的,可以参看C#2.0的迭代器章节中最后一小节,里面展示了微软C#编译器所实现的细节。