首页 > 学院 > 开发设计 > 正文

C#中的yield

2019-11-17 02:48:13
字体:
来源:转载
供稿:网友
C#中的yield

一、C#中yield关键字用于遍历循环中,yield语句的两种形式

yield return用于返回IEnumerable<T>,

yield break用于终止循环遍历。

二、yield return的用法

使用yield return获取集合,并遍历。

C# 代码 复制
    class PRogram
    {        public static Random r = new Random();        static IEnumerable<int> GetList(int count)        {            for (int i = 0; i < count; i++)            {                yield return r.Next(10);            }        }        static void Main(string[] args)        {            foreach(int item in GetList(5))                Console.WriteLine(item);            Console.ReadKey();        }    }

生成项目,并用反编译可执行文件。查看GetList方法,发现该方法返回的是一个GetList类的实例。原来yield return是"语法糖",其本质是生成了一个GetList的实例。

yield return的用法

那GetList实例是什么呢?点击反编译工具中<GetList>链接查看

yield return的用法

分析代码后可以知道

1、原来GetList类实现了IEnumerable和IEnumerator的泛型、非泛型接口 2、yield return返回的集合之所以能被迭代、遍历,是因为GetList内部有迭代器 3、yield return之所以能实现"按需供给",是因为GetList内部有一个_state字段记录这上次的状态

三、yield break的用法

使用yield break可以在获取集合的时候,当符合某种条件就终止获取集合。

C# 代码 复制
    class Program
    {        static Random rand = new Random();        static IEnumerable<int> GetList()        {            while (true)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表