泛型类Program2<T> 必须满足3个条件
1,实现IEnumerable<T>接口。
2,实现IEnumerable<T>接口的GetEnumerator()方法。
3,实现IEnumerable接口的GetEnumerator()方法。
【转的代码】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
public class Program2<T>:IEnumerable<T>
{
Stack stack;
public Program2()
{
stack = new Stack(); //构造函数初始化了stack字段
}
public void Push(T item){stack.Push(item);}
//将item元素压入到stack堆栈中
public T Pop(){return (T)stack.Pop();} //弹出stack堆栈的顶部元素
//-----------------实现IEnumerable<T>接口的GetEnumerator()方法
public IEnumerator<T> GetEnumerator()
{
while(stack.Count > 0)
{
yield return (T)stack.Pop();
//使用yield return语句产生迭代器的元素
}
}
//----------------实现IEnumerable接口的GetEnumerator()方法
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
class Test
{
static void Main()
{
Program2<int> p = new Program2<int>();
for (int i = 0; i < 10; i++)
{
p.Push(i);
}
foreach (int m in p)
{
Console.Write(m+" ");
}
Console.ReadLine();
}
}