实现IEnumberable接口和IEnumberator

 class BookEnum : IEnumerator  //实现foreach语句内部,并派生
    {

        public Book[] _book; //实现数组

        int position = -1;//设置“指针”

        public BookEnum(Book[] list)
        {

            _book = list; //实现list

        }

        public bool MoveNext()//实现向前移动
        {

            position++;     //位置增加

            return (position < _book.Length);   //返回布尔值

        }

        public void Reset()     //位置重置
        {

            position = -1;

        }//重置指针为-1

        public object Current      //实现接口方法
        {

            get
            {

                try
                {

                    return _book[position];      //返回对象

                }

                catch (IndexOutOfRangeException)      //捕获异常
                {

                    throw new InvalidOperationException();     //抛出异常信息

                }

            }

        }

    }

    public class Book : IEnumerable
    {

        public string Name;

        public string Price;

        public Book(string name, string price)
        {

            Name = name;

            Price = price;

        }

        private Book[] book;

        public Book(Book[] array) //
        {

            book = array;

        }

        public IEnumerator GetEnumerator()    //实现接口
        {

            return new BookEnum(book);      //返回方法
        }
    }

public partial class MainWindow : Window
    {
        public Student stu;
        public MainWindow()
        {
            InitializeComponent();
            Book[] book = new Book[3]
            {

                new Book("水浒","21"),           

                new Book("三国","21"),  

                new Book("西游","21")

            };

            foreach (Book p in book)
            {

                this.textBox2.Text+="书的名字:" + p.Name + ";价格: " + p.Price;

            }

        }
时间: 2024-10-07 18:26:12

实现IEnumberable接口和IEnumberator的相关文章

C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能

1.IEnumerator和IEnumerable的作用 其实IEnumerator和IEnumerable的作用很简单,就是让除数组和集合之外的类型也能支持foreach循环,至于foreach循环,如果不清楚,请参考C# foreach循环较for循环的优势与劣势 代码如下: static void Main(string[] args) { CatList cats = new CatList(); foreach (var cat in cats) { Console.WriteLine

.net 接口与 foreach必要条件

引用自http://blog.csdn.net/byondocean/article/details/6871881 初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下面我们先看IEnumerable和IEnumerator两个接口的语法定义.其实IEnumerable接口是非常的简单,只包含一个抽象的 方法GetEnumerator(),它返回一

Entity Framework快速入门--IQueryable与IEnumberable的区别

IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable后,使得IEnumerable不再那么单调,变得更加强大和丰富. 为了区别两个接口,我们通过一个实际的例子来解释一下. 根据上篇随笔的实例,编写如下代码: static void Main( string []

IQueryable与IEnumberable

1.IQueryable接口与IEnumberable接口的区别: IEnumerable<T> 会直接加载所有数据到内存,然后再筛选.是先从数据库取出数据放入内存,然后在本地调用SKip 和 Take 等扩展方法 IQueryable<T> 会先翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤. 所以在使用ORM.linq等的时候注意这两个接口,考虑好内存 ........... using (var db = new YourE

Entity Framework快速入门--IQueryable与IEnumberable的区别(转载)

IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable后,使得IEnumerable不再那么单调,变得更加强大和丰富. 为了区别两个接口,我们通过一个实际的例子来解释一下. 根据上篇随笔的实例,编写如下代码: static void Main(string[] a

IQueryable与IEnumberable的区别

IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable后,使得IEnumerable不再那么单调,变得更加强大和丰富. 为了区别两个接口,我们通过一个实际的例子来解释一下. 根据上篇随笔的实例,编写如下代码: static void Main(string[] a

EF入门 IQueryable和IEnumberable的区别

IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable后,使得IEnumerable不再那么单调,变得更加强大和丰富. 为了区别两个接口,我们通过一个实际的例子来解释一下. 编写如下代码: static void Main(string[] args) { //创

IQueryable &amp; IEnumberable 区别

Namespace And Inheritances Relations ? 1 2 3 4 5 6 7 8 9 Namespace: System.Collections     [ComVisibleAttribute(true)]     [GuidAttribute("496B0ABE-CDEE-11d3-88E8-00902754C43A")]     public interface IEnumerable Namespace: System.Collections.Gen

IEnumerable和IEnumerator 详解

http://blog.csdn.net/byondocean/article/details/6871881 初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下面我们先看IEnumerable和IEnumerator两个接口的语法定义.其实IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于