摘要:
1、委托是一个或多个函数指针的抽象,委托是类型安全的、面向对象和安全可靠的2、使用步骤 声明委托public delegate int DelegateClass (string info) 使用new关键字创建委托的一个实例DelegateClass obj1 = new DelegateClass(MethodA) 使用调用运算符()激活一个委托obj1("1")或者显式调用obj1.Invoke("2") 当对象不需要委托的时候,将委托实例设为null3、委托不能作为一个类的数据成员,也不能作为方法中的一个局部变量4、多个函数假如委托时,这些函数根 阅读全文
摘要:
1、运算符重载不能定义新的运算符 垃圾收集程序(GC)负责管理动态内存。因而,new运算符不能在托管代码中被重载 数组运算符在C++中通常被重载,以创建一个安全的数组,这里通常检查栅栏柱错误。C#中,CLR会自动检测栅栏柱错误,从而使重载数组运算符的主要理由不复存在 在C#中,不是像在C++中那样重载赋值运算符,而是实现了IClone接口2、重载operator==和operator!=方法应该调用Equals方法,以保证一致性3、operator|和operator&函数的布尔重载将不执行短路运算,总是要对左、右操作数进行计算4、 阅读全文
摘要:
1、可枚举的类型必须实现IEnumerable和IEnumerator接口2、枚举器实现了IEnumerator接口,它迭代Object类型,会有如下问题 1、值类型的装箱和取消装箱操作降低了性能 2、向下类型转换(从父类型到子类型)到引用类型也要付出少量的性能代价 3、频繁的装箱操作会使托管堆空间紧张 4、大型值类型集合的装箱也会使托管堆空间紧张 5、需要与System.Object之间的类型转换,这并非是类型完全安全的3、迭代器 yield语句 语法:yield return expresssion yield break 迭代器块 迭代器块是维护迭代之间的枚举器的状态... 阅读全文
摘要:
1、和其他语言中的参数化多态相比,区别在于泛型的编译时和运行时的语义。2、泛型与参数化模板的主要区别是后者纯粹是基于编译时。参数化模块的实例在编译时展开为不同的类3、CLR执行泛型类型智能展开4、.NET FCL包含通用的集合类用于普通的数据算法,诸如堆栈、队列、动态数组和字典等,这些集合是基于对象的,其对性能有影响,妨碍了类型安全,而且有可能消耗可用的内存5、参数化集合包含在System.Collections.Generic命名空间中动态数组 List<T>LIFO列表 Stack<T>FIFO列表 Queue<T>键/值对集合 Dictionary&l 阅读全文