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

探秘C#中的yield关键字

2019-11-17 02:52:57
字体:
来源:转载
供稿:网友

探秘C#中的yield关键字

在"C#中,什么时候用yield return"中,我们了解到:使用yield return返回集合,不是一次性加载到内存中,而是客户端每调用一次就返回一个集合元素,是一种"按需供给"。本篇来重温yield return的用法,探秘yield背后的故事并自定义一个能达到yield return相同效果的类,最后体验yield break的用法。

□ 回顾yield return的用法

以下代码创建一个集合并遍历集合。

   class PRogram
    {
        static Random r = new Random();
        static IEnumerable<int> GetList(int count)
        {
            List<int> list = new List<int>();
            for (int i = 0; i < count; i++)
            {
                list.Add(r.Next(10));
            }
            return list;
        }
        static void Main(string[] args)
        {
            foreach(int item in GetList(5))
                Console.WriteLine(item);
            Console.ReadKey();
        }
    }

使用yield return也能获得同样的结果。修改GetList方法为:

        static IEnumerable<int> GetList(int count)
        {
            for (int i = 0; i < count; i++)
            {
                yield return r.Next(10);
            }
        }
通过断点调试发现:客户端每显示一个集合中的元素,都会到GetList方法去获取集合元素。

□ 探密yield

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

    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);
            }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表