![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
.Net
文章平均质量分 78
yangyangcong
这个作者很懒,什么都没留下…
展开
-
《Effective C#》 Item 26:对需要排序的对象实现IComparable和IComparer接口
有时候我们需要为类定义排序关系以便在集合中对该类的对象进行排序和检索。在.Net Framework中定义了两种用来描述排序顺序关系的接口:IComparable和IComparer。IComparable接口描述了类型的通用排序比较方法,而IComparer描述的是两个对象之间的比较方法。在本节中主要讨论如何实现这种排序顺序关系。另外,我们可以通过实现自定义关系运算符来提供这些特殊的比较关系。转载 2008-06-27 17:43:00 · 569 阅读 · 0 评论 -
《Effective C#》 Item 28: 避免使用类型转换操作符
转换操作为我们提供了类之间的一种可置换的关系。这意味着一个类的对象可以被其它类的对象替代。这样的好处在于:一个派生类的对象可以被其基类的对象代替。我们可以参考下图结构。我们创建一个Shape基类和三个派生类:Circle,Ellipse,Square。任何情况下都可以用Circle来替代Shape,因为Circle是一个特殊的Shape,这是多态的表现。就像在.Net中,任何对象都可以被S转载 2008-06-27 21:52:00 · 359 阅读 · 0 评论 -
《Effective C# 》Item 24: 使用元数据来控制程序
Effective C# Item 24: Prefer Declarative to Imperative Programming 声明式编程是一种简洁的程序行为描述方式。声明式编程让我们可以通过使用声明来达到定义程序行为的目的。在C#或者其它的编程语言中,命令式编程是最为常见的:我们通过编写方法来定义程序的行为。我们可以通过C#中的属性来使用声明式编程。我们可以为类,方法,属性和转载 2008-06-26 22:44:00 · 456 阅读 · 0 评论 -
《Effective C# 》Item 25:优先使用可序列化(serilizable)类型
在我们创建自己的类型时,有些基本的特性是容易被忽略的,例如可序列化。如果我们的类型不支持可序列化属性,那么对于使用这些类型的开发人员来说可能需要为此付出一些不必要的工作。如果我们的类型不支持序列化,那么对于使用者来说,想要将其修改为支持序列化是非常困难或者根本不可能做到的。 我们应当尽量让我们的自定义类型支持序列化。在.Net中做到这一点是很容易的,大部分情况下只需要添加一个Seri转载 2008-06-26 23:54:00 · 711 阅读 · 0 评论 -
《Effective C#》 Item 27:避免使用 ICloneable接口
Effective C# Item 27: Avoid ICloneable ICloneable听起来不错:通过它我们就可以让类型支持拷贝。但是我们的类往往并不是独立存在的。一旦我们确定要支持ICloneable,那么它的所有派生类也需要实现这个接口。内部的所有成员也需要支持ICloneable或者其它创建拷贝的机制。要实现深克隆经常会带来很多的问题。在理论上ICloneable是转载 2008-06-27 21:27:00 · 271 阅读 · 0 评论