zoukankan      html  css  js  c++  java
  • foreach遍历访问的对象必须实现IEnumerable 或声明GetEnumerator

    需要实现一个对象为可遍历的对象,必须实现IEnumerable或声明GetEnumerator 方法,其中,IEnumerable 不是必须实现,但是GetEnumerator 方法则必须声明:

    例如,先声明一个Item类,该类用于遍历的实体

    //先声明一个Item的对象,用于遍历的实体对象
        public class Item
        {
            public int Id;
            public string Name;
            public int Price;
    
            public Item(int id, string name, int price)
            {
                Id = id;
                Name = name;
                Price = price;
            }
        }

    接下来我们实现 IEnumerable ,同时实现 GetEnumerator 方法,注意这个接口不是一定要实现,但是GetEnumerator 一定要声明。

    //接下来的类就是要暴露给外部调用,实现了IEnumerable 的itemList
    
        public class ItemList : IEnumerable// 这里也可以不实现 IEnumerable,但GetEnumerator必须实现
        {
            private Item[] items;
    
            public int Count
            {
                get { return items.Length; }//拿到数组中的count
            }
    
            public ItemList(Item[] _items)
            {
                items = _items;
            }
    //必须实现GetEnumerator
            public IEnumerator GetEnumerator()
            {
                for (int i = 0; i < items.Length; i++)
                {
                    yield return items[i];//通过yield 将通过index找到的item返回到迭代器foreach对象中
                }
            }
        }

    在Program.cs 中调用,遍历

    ItemList itemList = new ItemList(new Item[] { new Item(1, "apple", 3), new Item(2, "banana", 3) });
    foreach (var item in itemList)
    {
        Console.WriteLine(item);
    }
  • 相关阅读:
    shell 守护进程
    leetcode Find Minimum in Rotated Sorted Array II python
    find: missing argument to `-exec'
    php fpm start.sh
    mysql alter
    nginx log format
    leetcode Contains Duplicate II python
    webpack
    各种安装包打包发布工具
    VueJS 事件修饰符
  • 原文地址:https://www.cnblogs.com/vpersie2008/p/12219188.html
Copyright © 2011-2022 走看看