码迷,mamicode.com
首页 > 编程语言 > 详细

关于迭代器中IEnumerable与IEnumerator的区别

时间:2016-04-09 20:26:11      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

首先是IEnumerable与IEnumerator的定义:

1.IEnumerable接口允许使用foreach循环,包含GetEnumerator()方法,可以迭代集合中的项。

2.IEnumerator接口是一个真正的集合访问器,它包含MoveNext()方法和Current属性,在foreach循环中,如果MoveNext()返回True,则就是用IEnumerator接口的Current属性来获取对象的一个引用,用于foreach循环。

下面是自定义的一个迭代器的例子:

Primer.CS

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ch11Ex03_Exam
{
    public class Primes
    {
        private long min;
        private long max;
        public Primes():this(2,100)
        {
            
        }
        public Primes(long minNum,long maxNum)
        {
            if(minNum<2)
            {
                min=2;
            }else{
                min = minNum;
            }
            max = maxNum;
        }
        public IEnumerator GetEnumerator()//返回的是IEnumerator
        {
            for(long i=min;i<max;i++)
            {
                int flag = 1;
                for(long j=2;j<Math.Sqrt(min);j++)
                {
                    if(i%j==0)
                    {
                        flag = 0;
                        break;
                    }
                }
                if(flag==1)
                {
                    yield return i;
                }
            }
        }
    }
}

Program.CS:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ch11Ex03_Exam
{
    class Program
    {
        static void Main(string[] args)
        {
            Primes s = new Primes(2, 100);
            foreach(long i in s)
            {
                Console.WriteLine("{0}\t", i);
            }
            Console.ReadKey();
        }
    }
}

 

关于迭代器中IEnumerable与IEnumerator的区别

标签:

原文地址:http://www.cnblogs.com/JsonZhangAA/p/5372292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!