yield

本文详细介绍了C#中yield return关键字的使用方法及其特性。主要包括:1. 延迟执行:只有在对返回的IEnumerable进行迭代时才执行具体操作;2. 保留位置:每次迭代时从上次停止的位置继续执行;3. 返回类型必须是IEnumerable或其泛型形式。

关键词:延迟、当前位置保留、IEnumerable

例:

复制代码
        static void Main(string[] args)
        {
            IEnumerable ie = funyield();
            foreach (string s in ie)
            {
                Console.WriteLine(s);
            }
            Console.ReadKey();
        }
        public static IEnumerable funyield()
        {
            yield return "ff";
            yield return "DD";
            yield return "bb";
        }
复制代码

1.延迟
当Main函数执行时,执行完IEnumerable ie=funyield();语句后,实际根本没有执行funyield方法,当之后对其进行迭代的时候才会去执行。
一旦我们在一个返回类型为IEnumerable或IEnumerable<T>的方式中通过yield return 返回集合元素,意味着这个方法中的操作会被”延后执行“---操作的真正执行不是发生在调用时候,而是延后到对返回的集合进行迭代的时候。

2.保留位置
对上述代码 打断点,再执行时会发发现,foreach每次的迭代都要去执行funyield方法,并且一次执行返回的数据,第一次执行返回 ff ,保留位置,下次再迭代的时候就要从下一个开始,即执行返回 DD

3.IEnumerable
在使用yield关键字的时候,返回类型必须是IEnumerableIEnumerable<T>IEnumerator或 IEnumerator<T>

MSDN:http://msdn.microsoft.com/zh-cn/library/vstudio/9k7k7cf0.aspx


本文转自武沛齐博客园博客,原文链接:http://www.cnblogs.com/wupeiqi/p/3145780.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值