文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>迭代器

迭代器

时间: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>。
yield 关键字用于指定返回的值。到达 yield return 语句时,会保存当前位置。下次调用迭代器时将从此位置重新开始执行。 迭代器对集合类特别有用,它提供一种简单的方法来迭代不常用的数据结构(如二进制树)。 下面来看个例子: 注意代码中IEnumerator和IEnumerable的使用 代码
  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
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载