using System;
using System.Collections;
namespace Chapter18EnumeratorSampleP340
{
class ColorEnumerator:IEnumerator
{
string[] _colors;
int _position = -1;
public ColorEnumerator(string[] theColors)// 构造函数
{
_colors = new string[theColors.Length];
for (int i=0;i<theColors.Length;i++)
_colors[i] = theColors[i];
}
public object Current//实现Current 得到集合中当前位置的元素的值
{
get
{
if (_position == -1)
throw new InvalidOperationException();
if (_position >= _colors.Length)
throw new InvalidOperationException();
return _colors[_position];
}
}
public bool MoveNext()//实现MoveNext():让迭代器往前走到下一个元素,成功返回true,反之 返回false
{
if (_position < _colors.Length - 1)
{
_position++;
return true;
}
else
return false;
}
public void Reset()//实现Reset:设定枚举器回到初始的位置,在第一个元素之前
{
_position = -1;
}
}
class Spectrum :IEnumerable//接口System.Collections.IEnumerator,暴露出一个枚举器支持简单的迭代,
//在一个非泛型的集合中。必须实现函数GetEnumerator()
{
string[] Colors = { "violet", "blue", "cyan", "green", "yellow", "orange", "red" };
public IEnumerator GetEnumerator()
{
return new ColorEnumerator(Colors);
}
}
class Program
{
static void Main(string[] args)
{
Spectrum spectrum = new Spectrum();
foreach (string color in spectrum)
Console.WriteLine(color);
Console.WriteLine("Hello World!");
}
}
}
C#图解教程(第四版)_18章枚举器和迭代器:EnumeratorSampleP340
最新推荐文章于 2024-08-10 19:25:52 发布