要是自己的类支持foreach ,必须在类中必须有GetEnumerator方法,该方法返回的是一个IEnumerator类型的枚举器;
public class MyStruct
{
public string sName = new string { "张三", "李四", "王五" };
public IEnumerator GetEnumerator
{
return new MyStructEnumerator(sName);
}
}
所以自己得写一个类类继承IEnumerator接口,并在类中实现IEnumerator接口;
public class MyStructEnumerator : IEnumerator
{
//要遍历的对象
private string sList;
public MyStructEnumerator(string[] get)
{
sList = get; //得到
}
//索引
private int index = -1;
//获取当前项
public object Current
{
get
{
if(index>=0&&index<sList.Length)
{
return sList[index];
}
else
{
throw new IndexOutOfRangeException;
}
}
}
//移到下一个
public bool MoveNext
{
if (index+1 < sList.Length)
{
index++;
return true;
}
else
{
return false;
}
}
//重置
public void Reset
{
index = -1;
}
}
然后在实例化自己写的MyStruct就可以用foreach来遍历了;
