使用foreach循環(huán)是有IEnumerator接口來實現(xiàn)的,IEnumerator即實現(xiàn)了迭代器,在foreach中如何迭代一個集合arrayList呢?
迭代器的實現(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"; } }

下面給個復(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é)果為:

迭代器返回的類型有兩種:IEnumberable和IEnumerator。
新聞熱點
疑難解答