接口IEnumberable,IEnumberable

来源:互联网 发布:eclipse java se下载 编辑:程序博客网 时间:2024/05/22 00:25

1.IEnumberable和IEnumberable<T>

IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单迭代,IEnumerable和IEnumerable<T>接口是.NET Framework中最基本的集合访问器。在面向对象的开发过程中,常常需要创建若干对象,并进行对象的操作和查询。

例如:

//Person类

namespace CA_LINQ
{
    class Person:IEnumerable
    {
        public String Name;
        public String Age;
        private Person[] per;
        public Person(String name,String age)
        {
            Name = name;
            Age = age;
        }
        public Person(Person[] array)
        {
            //迭代对象
            per = new Person[array.Length];
            for (int i = 0; i < array.Length; i++)
            {
                per[i] = array[i];//数组赋值
            }
        }

        #region IEnumerable 成员

        public IEnumerator GetEnumerator()
        {
            return new PersonEnum(per);
        }

        #endregion
    }
}
//实现foreach语句的PersonEnum类

namespace CA_LINQ
{
    class PersonEnum: IEnumerator
    {
        public Person[] _per;    //实现数组
        int position = -1;    //设置指针
        public PersonEnum(Person[] list)    //构造方法
        {
            _per = list;
        }
        public Boolean MoveNext()    //实现向前移动
        {
            position ++;
            return (position < _per.Length);
        }
        public void Reset()    //位置重置
        {
            position = -1;
        }

        #region IEnumerator 成员

        public object Current
        {
            get
            {
                try
                {
                    return _per[position];    //返回对象
                }
                catch(IndexOutOfRangeException)    //捕捉异常
                {
                    throw new InvalidOperationException();
                }
            }
         
        }

        #endregion
    }
}

//主类

namespace CA_LINQ
{
    class Program
    {
        static void Main(string[] args)
        {
            Person[] MyPerson = new Person[2]//创建两个Person对象
            {
                new Person("陈湖","25"),
                new Person("陈在下","24"),
            };
            Person personlist = new Person(MyPerson);
            foreach (Person p in personlist)
            {
                Console.WriteLine("姓名:" + p.Name + ",年龄:" + p.Age);
            }
            Console.ReadKey();
        }
    }
}

原创粉丝点击