Static Code Analysis
Class & Struct
- 类存储在堆上,结构存储在栈上
- 结构不支持实现继承,但支持接口继承
- 结构是值类型,结构派生于System.ValueType
- 结构不能定义无参数的构造函数
继承
- 实现继承
- 接口继承
- 不支持多重继承
object
object是关键字,它是System.Object类的假名。
虚函数virtual
- 函数默认不是虚函数,需要virtual指定虚拟,重写函数时,必须指定override, override关键字是为了方便编译器识别重写签名的笔误错误。
- 调用方法时,会调用对象类型的合适方法
隐藏方法
- 当签名相同的方法在基类和派生类都进行了声明,且没有声明为virtual和override,那么派生类会隐藏基类的方法。
- 派生类会自动继承基类的方法。
- C#不支持多重继承,所以可通过base.
()调用基类方法。
抽象类
- 抽象类不能实例化,可以用abstract修饰类,如果没有修饰抽象类,如果有抽象函数,那该类也会自动转为抽象类。
- 抽象函数不能有实现代码,必须在非抽象的派生类中重现。
- 抽象函数类似于虚函数,需要在派生类中重写。
密封类 sealed
该类不能被继承。
new修饰符
在用作声明修饰符时,new 关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。 虽然可以不使用 new 修饰符来隐藏成员,但将收到编译器警告。 如果使用 new 来显式隐藏成员,将禁止此警告。