迭代器
时间:2010-12-22 来源:自学——X
打开书一看,这章讲的是迭代器,一下懵了,不知道是什么东东,以前学习的时候也没有听说过。都打算跳过了,看一下简介。庆幸的是没有跳过。迭代器说真的是个很重要的东西啊!在数据库的遍历里会用到的吧,依我现在的理解。来看看他的概念吧。不管事什么东西概念都是最精华的哦。真正的理解了,你就进价了。copy的了。
迭代器是 C# 2.0 中的新功能。迭代器是方法、get 访问器或运算符,它使您能够在类或结构中支持 foreach 迭代,而不必实现整个 IEnumerable 接口。您只需提供一个迭代器,即可遍历类中的数据结构。当编译器检测到迭代器时,它将自动生成 IEnumerable 或 IEnumerable<T> 接口的 Current、MoveNext 和 Dispose 方法。
迭代器概述
- 迭代器是可以返回相同类型的值的有序序列的一段代码。
- 迭代器可用作方法、运算符或 get 访问器的代码体。
- 迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。有关更多信息,请参见 yield。
- 可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){}
- 迭代器的返回类型必须为 IEnumerable、IEnumerator、IEnumerable<T> 或 IEnumerator<T>。
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace 迭代器的使用
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12 StudentList studentlist = new StudentList();
13 ///使用迭代器获得studentlist的字段值
14 foreach (object student in studentlist)
15 {
16 Console.WriteLine(student.ToString());
17 }
18 Console.ReadLine();
19 }
20 }
21
22 class StudentList
23 {
24 string student1 = "甲";
25 string student2 = "乙";
26 string student3 = "丙";
27 string student4 = "丁";
28 string student5 = "戊";
29
30 public string Student1
31 {
32 get
33 {
34 return student1;
35 }
36 set
37 {
38 student1 = value;
39 }
40 }
41
42 public string Student2
43 {
44 get
45 {
46 return student2;
47 }
48 set
49 {
50 student2 = value;
51 }
52 }
53
54 public string Student3
55 {
56 get
57 {
58 return student3;
59 }
60 set
61 {
62 student3 = value;
63 }
64 }
65 public string Student4
66 {
67 get
68 {
69 return student4;
70 }
71 set
72 {
73 student4 = value;
74 }
75 }
76 public string Student5
77 {
78 get
79 {
80 return student5;
81 }
82 set
83 {
84 student5 = value;
85 }
86 }
87 ///
88 /// 类StudentList的迭代器
89 ///
90 ///
91 public System.Collections.IEnumerator GetEnumerator()
92 {
93 ///通过for循环对StudentList类中的5个string类的变量进行处理
94 for (int i = 0; i < 5; i++)
95 {
96 ///通过switch对for循环中的i进行判断,返回相应的变量
97 switch (i)
98 {
99 case 0:
100 yield return student1;
101 break;
102 case 1:
103 yield return student2;
104 break;
105 case 2:
106 yield return student3;
107 break;
108 case 3:
109 yield return student4;
110 break;
111 case 4:
112 yield return student5;
113 break;
114 }
115 }
116 }
117 }
118
119 }
120
相关阅读 更多 +