细节决定成败

1.Equal()和运算符==区别:==操作符比较的是两个变量的值是否相等,或两个引用是不是指向同一个内存地址。Equals()方法比较的是两个对象指向的内存空间里的内容是不是相同;也就是比较两个“引用类型”是否是同一个对象的引用。即两个对象的内容是否相等。

 

(2010-3-10 收获不是很多,很多事耽搁的感觉 P80。2。1OVER)

 

2.因为值类型是存储在内存中的堆栈(以下简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中;==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同;equals操作表示的是两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

 

3.参数修饰符params,out 和ref的区别

Params:一个可以让方法拥有的可变参数的关键字;在方法生命中的params关键字之后不允许存在其他任何的参数,并且在方法生命中只允许存在一个params关键字。

Out:一个引用传递

Ref:在传递之前进行初始化。仅仅是一个地址。

不能同时出现REF与OUT的重载

4.值类型和引用类型的区别:

值类型存储在堆栈中,引用类型存储在托管堆中。值类型直接从堆栈里面取值就可以了,而引用类型必须要先从堆栈里面取出它的地址,在根据这个地址到堆里面找到对应的值

 

值类型

引用类型

内存分配地点

分配在栈中

分配在堆中

效率

效率高,不需要地址转换

效率低,需要进行地址转换

内存回收

使用完后,立即回收

使用完后,不是立即回收,而是等待GC回收

赋值操作

进行复制,创建一个同值新对象

只是对原有对象的引用

函数参数与返回值

是对象的复制

是原有对象的引用,并不产生新的对象

类型扩展

不易扩展

容易扩展,方便与类型扩展

 

2010-3-11P102进度目前   一堆的区别看得头都要乱了!

1.NEW一个类的实例时,对象保存了该实例实际数据的引用地址,而对象的值保存在托管堆(Managerd Heap)中。

2.struct实例分配在线程的堆栈上,它本身存储了值,而不包含指向该值的指针,所以在使用struct时,我们可以将其当作int,char这样的基本类型来对待。

3.类和结构的区别

1)class是引用类型,stuct 是值类型。从职能观点来看,class表现为行为,而stuct常用于存储数据。

2)class支持继承,可以继承自类和接口。Stuct没有继承性,不能从另外一个结构或者类继承,本身也不能被继承。

posted @ 2010-03-14 14:31  Fighting.  阅读(173)  评论(0编辑  收藏  举报