你必须知道的.Net

发布时间:2014-02-24    发布:cenbel_lin    分类:技术文档

1、对于值类型嵌套引用类型的情况,引用类型变量作为值类型的成员变量,在堆栈上保存该成员的引用,而实际的引用类型依然保存在GC堆上;对于引用类型嵌套值类型的情况,则该值类型字段将作为引用类型实例的一部分保存在GC堆上。

2、继承就是面向对象中类与类之间的一种关系。

3、子类也可以实现对基类的扩展和改写,主要有两种方式:一是通过子类中增加新方法;二是通过对父类方法的重写改写,在.NET中称为覆写override。

4、对象的创建过程是按照顺序完成了对整个父类及其本身字段的内存创建,并且字段的存储顺序是由上到下排列,最高层类的字段排在最前面。

5、抽象类适合于有族层概念的类间关系,而接口最适合为不同的类提供通用功能;接口着重于CAN-DO关系类型,而抽象类则偏重于IS-A式的关系;接口多定义对象的行为,抽象类多定义对象的属性;如果预计会出现版本问题,可以创建“抽象类”。

6、继承关系中,我们更多的是关注其共性,因为共性是层次复用的基础,而特性是系统扩展的基点。从宏观上看,继承多关注于共同性,而多态多着眼于差异性。

7、面向对象原则:多组合,少继承;低耦合,高内聚。

8、多态,是指同一操作作用于不同的实例,产生不同运行结果的机制。

9、接口在本质上,依旧是一个不能实例化的类,但是又区别于一般意义上的类,例如不能实例化,允许多继承,可以作用于值类型等。

10、良好的设计必然是面向抽象的,而接口是实现这一思想的完美手段之一。

11、按值传递的实质是传递值,不同的是这个值在值类型和引用类型的表现是不同的:参数为值类型时,“值”为实例本身,因此传递的是实例拷贝,不会对原来的实例产生影响,参数为引用类型时,“值”为对象引用,因此传递的是引用地址拷贝,会改变原来对象的引用指向,这是二者在统一概念上的表现区别。

12、引用类型参数的按值传递,传递的是参数本身的值,也就是上面提到的对象引用;按引用传递,传递的不是参数本身的值,而是参数的地址。如果参数为值类型,则传递的是该值类型的地址,如果参数为引用类型,则传递的是对象引用的地址。

13、不管是值类型还是引用类型,按引用传递必须以ref或者out关键字来修饰,其规则是:方法定义和方法调用必须同时显示的使用ref或者 out,否则将导致编译错误;按引用传递时,不管参数是值类型还是引用类型,在本质上是相同的,这就是ref和out关键字将告诉编译器,方法传递的是参数地址,而不是参数本身。不管参数本身是值类型还是引用类型,按引用传递时,传递的都是参数的地址,也就是实例的指针;如果参数是值类型时候,传递的是值类型变量的引用,因此在效果上类似于引用类型参数的按值传递方式,其实质可以分析为:值类型的按引用传递方式,实现的是对值类型参数实例的直接操作,方法调用为该实例分配内存,而被调用方法操作该内存,也就是值类型的地址;而引用类型参数的按值传递当时,实现的是对引用类型的“值”引用指针的操作。

14、栈的分配是向低地址扩展,而堆的分配是向高地址扩展。

15、new一个Class时候,new完成了一下两方面的内容,一是调用newobj命令来为实例在托管堆中分分配内存,二是调用构造函数来实现对象初始化。new一个struct时,new运算符用于调用其带构造函数,完成实例的初始化。

16、值类型和引用类型在分配内存时候是不同的,值类型分配于线程的堆栈上,并变量本身就保存其实值,因此不受GC的控制,而引用类型变量,包含了指向托管堆的引用,内存分配于托管堆上,内存收集由GC完成。

17、在静态成员中使用base和this都是不允许的,原因是base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问。

18、独立之人格,自由之思想!

讯博网络:http://www.cenbel.com

查看 [2184]   评论 [0] 
相关标签: 程序开发 
文章评论
暂无数据!
我来说两句
昵 称:
评 论:
   
咨询电话:020-61136292 87569708 61004412 61004413
讯博官网 | 走进讯博 | 整合营销 | 案例解读 | 资讯中心 | 案例欣赏 | 产品体验区 | 客户如是说 | 联系我们
版权所有 © 2003-2014 广州讯博网络科技有限公司 粤ICP备08107356号 开心一刻
Website Design & Power by:Cenbel.com