1. 根据对象在运行时在内存中的位置,值类型位于线程的堆栈,而引用类型位于托管堆。

  2. GC管理所有的托管堆对象,当内存回收执行时,GC检查托管堆中不再被使用的对象,并执行内存回收操作。不被应用程序使用的对象,指的是对象没有任何引用。
  3. 线程的堆栈,用于分配值类型实例。
  4. GC堆,用于分配小对象实例。如果引用类型对象的实例大小小于85000字节,实例将被分配在GC堆上,当有内存分配或者回收时,垃圾收集器可能会对GC堆进行压缩。
  5. LOH(Large Object Heap)堆,用于分配大对象实例。如果引用类型对象的实例大小不小于85000字节时,该实例将被分配到LOH堆上,而LOH堆不会被压缩,而且只在完全GC回收时被回收。
  6. 抽象类的继承和接口继承:
  7. 抽象类适合于有族层概念的类间关系,而接口最适合为不同的类提供通用功能。
  8. 接口着重于CAN-DO关系类型,而抽象类则偏重于IS-A式的关系。
  9.  接口多定义对象的行为;抽象类多定义对象的属性。
  10.  如果预计会出现版本问题,可以创建“抽象类”。例如,创建了狗(Dog)、鸡(Chicken)和鸭(Duck),那么应该考虑抽象出动物(Animal)来应对以后可能出现马和牛的事情。而向接口中添加新成员则会强制要求修改所有派生类,并重新编译,所以版本式的问题最好以抽象类来实现。
  11. 因为值类型是密封的,所以只能实现接口,而不能继承类。
  12. 在.NET中,多态指同一操作作用于不同的实例,产生不同运行结果的机制
  13. 面向对象的开放封闭原则:对扩展开放,对修改关闭
  14. ET中以操作符ref和out来标识值类型按引用类型方式传递,其中区别是:ref在参数传递之前必须初始化;而out则在传递前不必初始化,且在传递时必须显式赋值。
posted on 2009-11-28 15:08  流星陨落  阅读(220)  评论(0编辑  收藏  举报