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);
    }
  • 相关阅读:
    第一章嵌入式系统基础1.5嵌入式系统性能评价
    第一章嵌入式系统基础1.4
    1.3嵌入式系统的硬件基础
    学习第二天
    经典的删除字符串中指定的字符
    字符串的两种表示
    股票数据定向爬虫
    淘宝商品比价定向爬虫
    中国大学排名定向爬虫
    python小练习 批量修改文件名
  • 原文地址:https://www.cnblogs.com/vpersie2008/p/12219188.html
Copyright © 2011-2022 走看看