国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

.NET基礎(chǔ)之迭代器

2019-11-14 16:20:20
字體:
供稿:網(wǎng)友

使用foreach循環(huán)是有IEnumerator接口來實現(xiàn)的,IEnumerator即實現(xiàn)了迭代器,在foreach中如何迭代一個集合arrayList呢?

  1. 調(diào)用arrayLis.GetEnumberator(),返回一個IEnumberator引用。
  2. 調(diào)用所返回的Enumberator接口的MoveNext()方法。
  3. 如果MoveNext()返回true,就使用IEnumberator接口的Current屬性獲取對象的一個引用,用于foreach循環(huán)。
  4. 重復(fù)前面兩步,知道MoveNext方法返回false為止,此時循環(huán)停止。

迭代器的實現(xiàn)例子:

class PRogram    {                public static void Main(string[] args)        {            foreach (string str in SimpleList())            {                Console.WriteLine(str);            }            Console.ReadKey();        }        public static IEnumerable SimpleList()        {            yield return "1";            yield return "2";            yield return "3";        }    }
這樣我們就實現(xiàn)了一個最簡單的迭代器。結(jié)果為:QQ截圖20141114211249

 

下面給個復(fù)雜一點的例子,用迭代器實現(xiàn)返回素數(shù):

public static void Main(string[] args)        {            Primes primesFrom2TO1000 = new Primes(2, 1000);            foreach (long i in primesFrom2TO1000)            {                Console.Write("{0}", i);            }        }
public class Primes     {        private long min;        private long max;        public Primes()            : this(2, 200)        { }        public Primes(long minimum, long maximum)        {            if (minimum < 2)            {                min = 2;            }            else            {                min = minimum;            }            max = maximum;        }        public System.Collections.IEnumerator GetEnumerator()//返回類型為一個迭代器        {            for (long possiblePrime = min; possiblePrime <= max; possiblePrime++)            {                bool isPrime = true;                for (long possibleFactor = 2; possibleFactor <= (long)Math.Floor(Math.Sqrt(possiblePrime)); possibleFactor++)                {                    long remainderAfterDivsion = possiblePrime % possibleFactor;                    if (remainderAfterDivsion == 0)                    {                        isPrime = false;                        break;                    }                }                if (isPrime)                {                    yield return possiblePrime;//為素數(shù),返回之                }            }        }    }

結(jié)果為:

QQ截圖20141114212209

 

迭代器返回的類型有兩種:IEnumberable和IEnumerator。

  • 如果要迭代一個類,可使用GetEnumerator(),它的返回類型是IEnumerator。
  • 如果要迭代一個類成員,例如一個方法,則使用IEnumerable。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安吉县| 浦北县| 师宗县| 甘谷县| 城市| 老河口市| 招远市| 称多县| 呼伦贝尔市| 西青区| 辽宁省| 交口县| 天镇县| 宝清县| 泗水县| 巩义市| 大丰市| 搜索| 云浮市| 蛟河市| 双峰县| 榆树市| 清新县| 屯留县| 富锦市| 京山县| 阿坝县| 礼泉县| 马公市| 社会| 安平县| 崇义县| 内黄县| 桦南县| 涿鹿县| 太原市| 扶绥县| 黎城县| 太仆寺旗| 营口市| 安徽省|