.Net 2.0模式开发实战
三种可以继承的类型:
class
interface
struct
interface、struct只能继承自其他接口
struct是值类型,字段保存在栈中
class是引用类型,字段是对堆中数据的引用
struct的值类型作为参数传递到方法时,类型的值被拷贝到栈党中,改变栈中的值是原类型的值的拷贝发生变化,原来实例的值不发生变化。
除非有很好的理由,不要在struct中继承接口
class
interface
struct
interface、struct只能继承自其他接口
struct是值类型,字段保存在栈中
class是引用类型,字段是对堆中数据的引用
struct的值类型作为参数传递到方法时,类型的值被拷贝到栈党中,改变栈中的值是原类型的值的拷贝发生变化,原来实例的值不发生变化。
除非有很好的理由,不要在struct中继承接口
用new覆盖基类方法:
public new(override) void method()
将会根据实例的声明类型来判断调用基类方法还是派生类方法
subclass.method()->派生类
(baseclass)subclass.method()->基类
public new(override) void method()
将会根据实例的声明类型来判断调用基类方法还是派生类方法
subclass.method()->派生类
(baseclass)subclass.method()->基类
基类声明了虚类
public virtual void method()
则只要派生类override了这个方法,不管声明类型是基类还是派生类都会优先调用override方法
public virtual void method()
则只要派生类override了这个方法,不管声明类型是基类还是派生类都会优先调用override方法
泛型编程:
![](/Images/OutliningIndicators/ContractedBlock.gif)