1,建一个Myclass类,实现IEnumerable接口,在该接口中有个GetEnumerator()方法,返回值类型为IEnumerato,在建一个辅佐类实现了IEnumerato接口
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using System.Collections;
namespace _05_foreach
{
class Myclass :IEnumerable
{
/// <summary>
/// 枚举器
/// </summary>
public class MyClassEnum : IEnumerator
{
public Student[] students;
public MyClassEnum(Student[] students)
{
this.students = students;
}
private int position = -1;
public object Current
{
get { return students[position]; }
}
public bool MoveNext()
{
position++;
return position < students.Length;
}
public void Reset()
{
position = -1;
}
}
private Student[] _students;
public Myclass(Student[] stu)
{
this._students = stu;
}
public IEnumerator GetEnumerator()
{
return new MyClassEnum(_students);
}
}
}
--------------学生类---------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _05_foreach
{
class Student
{
public Student(string name)
{
this.name = name;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
}
------------------------调用myclass类对student[] 进行排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _05_foreach
{
class Program
{
static void Main(string[] args)
{
Student stu1 = new Student("张三");
Student stu2 = new Student("李四");
Student stu3 = new Student("王五");
Myclass my = new Myclass(new Student[] { stu1, stu2, stu3 });
foreach (Student item in my)
{
Console.WriteLine(item.Name);
}
Console.Read();
}
}
}