委托与事件
委托
委托是用来处理其他语言(如C++)需用函数指针来处理的情况的,相当于C++的函数指针,但它是类型安全的
定义:
public delegate void MyDelegate(); //与类方法成员定义类似,只是前面加一个delegate关键字
创建委托类型对象:
MyDelegate d1 = new MyDelegate();
常用的系统内置委托
(1)Action无返回值的泛型委托
(2)Func有返回值的泛型委托
(3)Predicate<T>返回bool型的泛型委托
(4)Comparison<T>用于比较两个对象的泛型委托
事件
事件基于委托的,需要定义一个委托类型,然后在委托类型的定义之上定义一个事件
序列化与反序列化
序列化就是把程序中对象的相关数据保存到文件中去
反序列化就是在需要时根据保存在文件中数据得到原来对象的精确副本
在C#中,可以将序列化的对象数据存储在二进制文件中,也可以存储在XML文件中
二进制序列化
对象数据保存在二进制文件中
XML序列化
对象数据保存到XML文件中
采用XML序列化的方式只能保存public的数据成员和可读的属性,对于private等类型的数据成员不能进行序列化
泛型处理
泛型是C#中的一种通用的数据类型,通过使用泛型,我们可以极大地提高代码的重用度,避免了隐式的装箱、拆箱,在一定程度上提升了应用程序的性能。
集合
集合是一组对象的组合,这些对象称为集合的元素。
非泛型集合类
(1)ArrayList类
(2)Queue类和Stack类
(3)Hashtable类
泛型集合类
(1)List<T>
(2)Dictionary<T>
比较器
自定义类型要进行排序,必须自定义一个继承IComparer<T>接口,必须包含Compare()方法的实现