page contents

C语言面试题|简述 yield的作用

轩辕小不懂 发布于 2021-04-19 14:45
阅读 666
收藏 0
分类:C/C++开发

最佳答案 2021-04-19 14:54

646
Pack
Pack

yield需配合 IEnumerable<T>一起使用,能在一个函数中支持多次(不是多个)返回,其本质和 async/await一样,也是状态机。

如果不使用 yield,需实现 IEnumerable<T>,它只暴露了 GetEnumerator<T>,这样确保 yield是可重入的,比较符合人的习惯。

注意,其它的语言,如 C++/ Java/ ES6实现的 yield,都叫 generator(生成器),这相当于 .NET中的 IEnumerator<T>(而不是 IEnumerable<T>)。这种设计导致 yield不可重入,只要其迭代过一次,就无法重新迭代了,需要注意。

请先 登录 后评论