在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
迭代器 迭代器是什么? 迭代器是作为一个容器,将要遍历的数据放入,通过统一的接口返回相同类型的值。 为什么要用迭代器? 为何了为集合提供统一的遍历方式,迭代器模式使得你能够获取到序列中的所有元素而不用关心是其类型,如果没有迭代器,某些数据结构遍历较为困难,如Map无法迭代 如果一个类实现了IEnumerable接口,那么就能够被迭代,才能使用foreach 迭代器概述
yield 关键字用于指定返回的值。到达 yield return 语句时,会保存当前位置。下次调用迭代器时将从此位置重新开始执行 如何使用迭代器
public System.Collections.IEnumerator GetEnumerator() { for (int i = 0; i < max; i++) { yield return i; } }
//为整数列表创建迭代器 public class SampleCollection{ public int[] items = new int[5] { 5, 4, 7, 9, 3 }; public System.Collections.IEnumerable BuildCollection() { for (int i = 0; i < items.Length; i++) { yield return items[i]; } } } class Program { static void Main(string[] args) { SampleCollection col = new SampleCollection(); foreach (int i in col.BuildCollection())//输出集合数据 { System.Console.Write(i + " "); } for (;;) ; } }
类型比较 封箱和拆箱子:封箱是把值类型转换为System.Object,或者转换为由值类型的接口类型。拆箱相反。 装箱和拆箱是为了将值转换为对象 struct MyStruct { public int Val; } class Program { static void Main(string[] args) { MyStruct valType1 = new MyStruct(); valType1.Val = 1; object refType = valType1; //封箱操作,可以供传递用 MyStruct valType2 = (MyStruct)refType; //访问值类型必须拆箱 Console.WriteLine(valType2.Val);//输出1 for (;;) ; } Is运算符语法: <operand>is<type>同类型返回true,不同类型返回false As运算符语法: <operand>is<type>把一种类型转换为指定的引用类型
运算符重载 public class Add2 { public int val { get; set; } public static Add2 operator ++(Add2 op1) { op1.val = 100;//设置属性 op1.val = op1.val + 2; return op1; } } class Program { static void Main(string[] args) { Add2 add = new Add2(); add++; Console.WriteLine(add.val);//输出102 for (;;) ; } }
|
请发表评论