学习yield关键字
来源:互联网 发布:线刷软件 编辑:程序博客网 时间:2024/06/15 10:48
当使用yield关键字时,这就意味着该函数返回的是一个迭代器(iterator),不用自己维护一个迭代器内部的状态管理(比如C++中的itereator<T>,或实现C#中实现的接口IEmuerator<T>),其使用模式如下:
yield return <Expression>;
yield break;
其中第二种用于for循环终止。这样的模式也就实现了Linq的查询,但注意yield使用要求如下:
1. 迭代器函数不能有ref/out参数。
2. 迭代器函数返回必须是IEnumberable、IEnumerable<T>、IEnumerator或IEnumerator<T>。
3. yield 不能用于匿名函数返回。
4. yield return不能位于try/catch语句中,可以位于try/finally语句try语句中。
5. yield break可以位于try/cache语句中,不能位于try/finllay语句finally语句中。
测试代码如下:
class Program { static IEnumerable<int> test() { for (int i = 0; i < 4; ++i) { if (i == 3) yield break; yield return i; } } public static IEnumerable<string> Names { get { yield return "hello"; yield return "test"; } } static void Main(string[] args) { IEnumerable<int> l = test(); foreach (var item in new List<int>(l)) { Console.WriteLine("item:{0}", item); } foreach (var item in Names) { Console.WriteLine("name:{0}", item); } Console.ReadLine(); }}
具体可参考:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield
阅读全文
0 0
- 【C#学习】yield关键字
- 学习yield关键字
- yield 关键字
- yield关键字
- 关键字yield
- 关于pyhon3的yield关键字的一点学习
- yield关键字与数据源
- C#关键字之yield
- C#中的yield关键字
- C#关键字之yield
- Python的yield关键字
- 迭代器中关于关键字yield
- Python的yield关键字
- C# yield 关键字
- 关键字 yield in C#
- C# yield关键字
- Python关键字yield详解
- C# yield 关键字 使用
- 【Tarjan】BZOJ1051 [HAOI2006]受欢迎的牛
- 优雅的程序员这样度过十一假期
- 404 | 本以为今天是最后一天上班,结果...
- POJ-3041 匈牙利算法 二分图最大匹配
- 19. Remove Nth Node From End of List(移除链表的倒数第n个节点)
- 学习yield关键字
- 盘点 | 10大行业大数据应用痛点及解决策略
- 设置可见GPU,进行多显卡深度学习训练
- 幻方的思路与实现
- Codevs2185 最长公共上升子序列
- list添加集合被覆盖,利用map求和——代码应该怎么放(二)
- #Java 核心技术卷一阅读笔记# 第九章 集合
- java中设置文本框下凹的感觉
- JavaSE之static用法