摘要:
实现ICloneabl接口听起来很美,不是么?还真不是,你要是为某个类实现了ICloneable接口,你就得为它的子类和相关的深拷贝和浅拷贝担心,注意每一属性的可被复制的深浅及其被复制的必要性。这看起来是多么大的一个工程,也许远远超出你的想象。 阅读全文
随笔档案-2011年7月17日
Effective C# 学习笔记(三十一)利用IComparable<T>和IComparer<T>接口来实现排序关系
2011-07-17 21:13 by 小郝(Kaibo Hao), 389 阅读, 收藏,
摘要:
你的类型需通过描述在集合中该类型的对象该如何排序和被查找来说明其排序关系。
.NET framework中定义了ICommaprable和IComparer接口来为你的类型定义排序关系。
前者定义了你类型的自然排序方式,后者则定义了其他的排序方式(通过,=等运算关系的定义来提高在运行时的比较性能)。 阅读全文
Effective C# 学习笔记(三十)多用重载少用事件处理器
2011-07-17 21:12 by 小郝(Kaibo Hao), 407 阅读, 收藏,
摘要:
在.net中有两种实现事件机制的方式,一种方式是附加一个事件处理器,另一种是重载基类的虚方法。此两种方式各有其适用的环境。 阅读全文
Effective C# 学习笔记(二十九)在范型中的协变和逆变
2011-07-17 17:34 by 小郝(Kaibo Hao), 507 阅读, 收藏,
摘要:
协变:若一个返回值类型可以用该类型的子类型(继承类型)替代,我们就说该类型是可协变的;
逆变:若一个参数的类型可以用该类型的父类型(被继承类型)替代,我们就说该类型是被逆变的。
在你的范型声明、使用中,注意支持协变(Covariance)和逆变(Contravariance)。编译器会捕捉你使用不当的逆变或协变行为。 阅读全文
浙公网安备 33010602011771号