• 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);
    }
  • 相关阅读:
    数据库课程设计报告学生学籍管理信息系统
    C++ 指针
    解决知乎推荐视频问题
    踩坑指南接口返回前端json数据报错前端无法接收到
    java的接口如何设计异常的理解
    关于webapp项目打war包的问题
    关于继承的一点理解
    hadoop简介
    杨卫华:新浪微博的架构发展历程(转)
    linux server 配置vim编程位置
  • 原文地址:https://www.cnblogs.com/vpersie2008/p/12219188.html
Copyright © 2020-2023  润新知