码迷,mamicode.com
首页 > Windows程序 > 详细

C#类可以通过foreach遍历的原理

时间:2015-06-27 19:51:28      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

要使用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     }

 

C#类可以通过foreach遍历的原理

标签:

原文地址:http://www.cnblogs.com/kesimin/p/4604505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!