要使用foreach的遍历的类首先要满足的条件
1、类要实现公共方法 public IEnumerator GetEnumerator(){},还可以继承IEnumerable接口来实现这个方法
2、类实现了public IEnumerator GetEnumerator(){}中,要返回一个对象用于遍历的,当然这个对象必须继承IEnumerator 接口
1 class PRogram 2 { 3 static void Main(string[] args) 4 { 5 Person p = new Person(); 6 p[0] = "小明"; 7 p[1] = "晓虹"; 8 p[2] = "小芳"; 9 p[3] = "小龙";10 for (int i = 0; i < p.Count; i++)11 {12 Console.WriteLine(p[i]);13 }14 15 Console.WriteLine("==========================================");17 foreach (var name in p) 18 {19 Console.WriteLine(name);20 }21 Console.ReadKey();22 }23 }24 25 internal class Person:IEnumerable26 {27 private List<string> listStudent =new List<string>();28 public int Count {29 get { return listStudent.Count; }30 }31 32 public string this[int index]33 {34 get { return listStudent[index]; }35 set36 {37 if (index>=Count)38 {39 listStudent.Add(value);40 }41 else42 {43 listStudent[index] = value;44 }45 }46 }47 48 49 50 public IEnumerator GetEnumerator()51 {52 return new PersonIEnumerator(listStudent);53 }54 }55 56 class PersonIEnumerator:IEnumerator57 {58 public PersonIEnumerator(List<string> _listName)59 {60 listName = _listName;61 }62 63 private List<string> listName;64 private int index = -1;65 66 public object Current67 {68 get {return listName[index]; }69 }70 71 public bool MoveNext()72 {73 index++;74 if (index>=listName.Count)75 {76 return false;77 }78 else79 {80 return true;81 }82 }83 84 public void Reset()85 {86 index = -1;87 }88 }
新闻热点
疑难解答