yield关键字的使用

yield的中文是什么意思呢?

在金山词霸上面的翻译是:

vt.   

vi.  

n.   

个人觉得比较符合yield关键字在C#中的意思是退让,退位,让权。

yield关键字主要是在yield迭代器块中使用,使用yield的时候,C#编译器会创建一个状态机来保存当前我们迭代器块中的状态,返回当前需要返回的一个变量,然后暂时退出当前迭代器块。之后当下次需要调用迭代器块的时候,编译器会根据之前保存的状态然后进行你所定义的操作之后返回变量。

下面是一个例子:

创建一个IEnumerableExample类,实现IEnumerable接口,并在GetEnumerator方法中使用yield关键字进行返回变量。

public class IEnumerableExample:IEnumerable
        {
            private object[] values;

            public IEmuerableExample(object[] values)
            {
                this.values = values;
             
            }
            public IEnumerator GetEnumerator()
            {
                for(int i=0;i<values.Length;i++)
                {
                    yield return values[i];
                }
            }
        }

 

主函数:

 static void Main(string[] args)
        {
            object[] values={'a','b','c','d'};
            IEmuerableExample ie = new IEmuerableExample(values);
            foreach (var item in ie)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }

 

输出为:

这就是本人对于yield关键字的愚见,如有错误,请多多指正,谢谢。

posted @ 2015-09-03 23:53  守、护  阅读(1560)  评论(3编辑  收藏  举报