C#类可以通过foreach遍历的原理
作者:网络转载 发布时间:[ 2015/6/29 11:16:54 ] 推荐标签:软件开发
要使用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:IEnumerable
26 {
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 set
36 {
37 if (index>=Count)
38 {
39 listStudent.Add(value);
40 }
41 else
42 {
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:IEnumerator
57 {
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 Current
67 {
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 else
79 {
80 return true;
81 }
82 }
83
84 public void Reset()
85 {
86 index = -1;
87 }
88 }
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11