zoukankan      html  css  js  c++  java
  • C# 自定义集合类

    .NET中提供了一种称为集合的类型,类似于数组,将一组类型化对象组合在一起,可通过遍历获取其中的每一个元素

    本篇记录一个自定义集合的小实例。自定义集合需要通过实现System.Collections命名空间提供的集合接口实现,常用接口有:

    ICollection:定义所有非泛型集合的大小,枚举数和同步方法

    IComparer:公开一种比较两个对象的方法

    IDictionary:表示键/值对的非通用集合

    IDictionaryEnumerator:枚举非泛型字典的元素

    IEnumerable:公开枚举数,该枚举数支持在非泛型集合上进行简单的迭代

    IEnumerator:支持对非泛型集合的简单迭代

    IList:表示可按照索引单独访问的对象非泛型集合

    今天的这个实例,以继承IEnumerable为例,继承该接口时需要实现该接口的方法,IEnumerable GetEnumerator()

    在实现该IEnumerable的同时,需要实现 IEnumerator接口,该接口有3个成员,分别是:

    Current属性,MoveNext方法和Reset方法,其定义如下:

    Object Current{get;}

    bool MoveNext();

    void Reset();

    案例实现如下:

    1.定义一个商品类:作为集合类中的元素类

       public  class Goods
        {
            public string Code;
            public string Name;
            public  Goods(string code,string name)
            {
                this.Code = code;
                this.Name = name;
            }
        }

    2.定义集合类,继承IEnumerable和IEnumerator接口

    public  class JHClass:IEnumerable,IEnumerator//定义集合类
        {
            private Goods[] _goods;       //初始化Goods类型集合
            public JHClass(Goods[]gArray)
            {
                _goods = new Goods[gArray.Length];
                for (int i=0;i<gArray.Length;i++)
                {
                    _goods[i] = gArray[i];
                }
            }
            /// <summary>
            /// 实现IEnumerable接口中的GetEnumerator方法
            /// </summary>
            /// <returns></returns>
            IEnumerator IEnumerable.GetEnumerator()
            {
                return (IEnumerator)this;
            }
    
            int position = -1;  //记录索引位置
            // 实现IEnumerator接口中的Current方法
            object IEnumerator.Current
            {
                get
                {
                    return _goods[position];
                }
            }
    
            public bool MoveNext()
            {
                position++;
                return (position < _goods.Length);
            }
    
            public void Reset()
            {
                position = -1;
    
            }
        
        }

    3.功能实现,实现自定义集合的遍历,输出元素信息

      static void Main(string[] args)
            {
                Goods[] goodsArray = new Goods[3]
                {
                    new Goods("T0001","小米电视机"),
                    new Goods("T0002","华为荣耀4X"),
                    new Goods("T0003","联想服务器"),
                };
    
                JHClass jhList = new JHClass(goodsArray);
                foreach (Goods g in jhList)                                 //遍历集合
                {
                    Console.WriteLine(g.Code + "  " + g.Name);
                }
                Console.ReadLine();
            }

    执行后输出:

  • 相关阅读:
    Hadoop1重新格式化HDFS
    centos6.5之Hadoop1.2.1完全分布式部署安装
    Mybatis延迟加载和查询缓存
    剑指offer面试题7:用两个栈实现队列
    Mybatis输入输出映射
    Mybatis开发Dao
    Mybatis入门程序
    SpringMVC系列之URL匹配问题
    SpringMVC系列之主要组件
    mysql学习笔记(三)
  • 原文地址:https://www.cnblogs.com/allencxw/p/9590882.html
Copyright © 2011-2022 走看看