本文借鉴《编写高质量的C#代码:改善C#程序的157个建议》,算是对自己学习的总结,也希望分享下所学知识~~
什么是类型?
就是 Class
。
1.区分接口和抽象类
区别:
a.接口支持多继承,抽象类则不能。
b.接口可以包含方法、属性、所引起、事件的签名,但不能有实现;抽象类可以有实现。
c.接口在新增方法后,所有的继承者都必须重构,否则编译器不通过;抽象类不需要。
如何使用两者呢?
a.如果对象存在多个功能相近且关系紧密的版本,就是用抽象类。
b.如果对象关系不紧密,但是若干功能拥有共同的声明,就使用接口。
c.抽象类适合于提供丰富功能的场合,接口则更倾向于提供单一的一组功能。
一般来说,接口一旦被设计出来,就应该是不变的;抽象类可以随着版本的升级,增加一些功能。
FCL 的典范,抽象类为Stream相关,接口为集合相关。
2.区分组合和继承
继承是面向对象的一个重要特性。
组合是两个类之间的组合。
3.静态类的静态构造函数
特点:
a.只被执行一次,且在第一次调用类成员之前被运行时执行。
b.代码无法调用。
c.没有访问修饰符
d.不能带参数
4.区分静态类和单例
静态类和单例看起来差不多。
单例是一个对象,而静态类并不是对象。
静态类违反面向对象中的两项:继承和多态。
静态类不能从其他类型继承,其不会被认作一个真正的对象。
5.嵌套类
当某类型需要访问另一个类型的私有成员时,才将它实现为嵌套类。
嵌套类应该设置为 priavte。
6.枚举
特点:
a.效率高,枚举是值类型。
b.类型用于内部,不需要增加更多的行为和属性。
c.类型元素不需要提供附加的特性。
enum EWeek
{
Monday,
Tuesday
}
class Week
{
public static readonly Week Monday = new Week(0);
public static readonly Week Tuesday = new Week(1);
private int value;
public Week(int value)
{
this.value = value;
}
}
//for test
EWeek.Monday;
Week.Monday;
使用类,可以更方便扩展。