1.IEnumberable和IEnumberable<T>
IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单迭代,IEnumerable和IEnumerable<T>接口是.NET Framework中最基本的集合访问器。在面向对象的开发过程中,常常需要创建若干对象,并进行对象的操作和查询。
例如:
//Person类
namespace CA_LINQ
{
class Person:IEnumerable
{
public String Name;
public String Age;
private Person[] per;
public Person(String name,String age)
{
Name = name;
Age = age;
}
public Person(Person[] array)
{
//迭代对象
per = new Person[array.Length];
for (int i = 0; i < array.Length; i++)
{
per[i] = array[i];//数组赋值
}
}
#region IEnumerable 成员
public IEnumerator GetEnumerator()
{
return new PersonEnum(per);
}
#endregion
}
}
//实现foreach语句的PersonEnum类
namespace CA_LINQ
{
class PersonEnum: IEnumerator
{
public Person[] _per; //实现数组
int position = -1; //设置指针
public PersonEnum(Person[] list) //构造方法
{
_per = list;
}
public Boolean MoveNext() //实现向前移动
{
position ++;
return (position < _per.Length);
}
public void Reset() //位置重置
{
position = -1;
}
#region IEnumerator 成员
public object Current
{
get
{
try
{
return _per[position]; //返回对象
}
catch(IndexOutOfRangeException) //捕捉异常
{
throw new InvalidOperationException();
}
}
}
#endregion
}
}
//主类
namespace CA_LINQ
{
class Program
{
static void Main(string[] args)
{
Person[] MyPerson = new Person[2]//创建两个Person对象
{
new Person("陈湖","25"),
new Person("陈在下","24"),
};
Person personlist = new Person(MyPerson);
foreach (Person p in personlist)
{
Console.WriteLine("姓名:" + p.Name + ",年龄:" + p.Age);
}
Console.ReadKey();
}
}
}