C#学习笔记三: C#2.0泛型 可控类型 匿名方法和迭代器
2016-04-19 18:13
836 查看
前言
C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法。
另外C#2.0还提出了可空类型,匿名方法和迭代器3个优美的特性。
1,泛型
1.1 泛型是什么
泛型的英文表述是"generic", 这个单词意为通用的。从字面意思可知,泛型代表的就是"通用类型",它可以代替任意的数据类型,使类型参数化,
从而达到之实现一个方法就可以操作多种数据类型的目的。泛型是将方法实现行为与方法操作的数据类型分离,实现了代码重用。
//使用yield自定义实现迭代器 class Program { static void Main(string[] args) { //创建一个对象 Friends friendCollection = new Friends(); //Friends实现了IEnumerable,所以可以使用foreach语句进行遍历 foreach (Friend f in friendCollection) { Console.WriteLine(f.Name); } Console.ReadKey(); } } //朋友类 public class Friend { private string name; public string Name { get { return name; } set { name = value; } } public Friend(string name) { this.name = name; } } //朋友集合 public class Friends : IEnumerable { private Friend[] friendArray; public Friends() { friendArray = new Friend[] { new Friend("张三"), new Friend("李四"), new Friend("王五") }; } //索引器 public Friend this[int index] { get { return friendArray[index]; } } public int Count { get { return friendArray.Length; } } //C#2.0简化了迭代器的实现 public IEnumerator GetEnumerator() { for (int i = 0; i < friendArray.Length; i++) { //在C#2.0中, 只需要使用下面的语句就可以实现一个迭代器 yield return friendArray[i]; //这里使用yield 简化了IEnumerator GetEnumerator中的Current() MoveNext() Reset() 方法的实现 } } }View Code
4.3迭代器的执行过程图解
使用yield自定义迭代器
直接看code的实现形式吧:
相关文章推荐
- C#学习笔记二: C#类型详解
- C#中的类,结构体课堂笔记
- C#将Dictionary转换为XML
- C#委托与回调函数
- c#实现大数相加(字符串) string AddBig(string a, string b)
- C#笔记一 .Net Framwork
- C#判断操作系统类型汇总
- rdlc报表表达式应用(字符串和转换)
- C#中两个Form之间传值的一种方法
- C#获取命令行输出内容的方法
- C# 生成随机数重复问题
- 【C#图解】PictureBox.SizeMode 属性
- c#文件操作
- C# 委托跨窗口调用Button
- C#获取本地打印机列表,并将指定打印机设置为默认打印机
- C# datagridView数据插入
- C# ArrayList源码剖析
- VS 2015相当不错的功能:C#交互窗口
- C# 使用FileStream文件流对文件进行读取写入
- C#-using用法详解