昨天看《c# in Depth》,有部分是走出误区。觉得不错,故记之。
1.不少人认为引用类型在堆上,值类型在栈上,前半部分是对的,但后半部分就有问题了。假设一个类中有一个int类型的实例变量,那么这个类的任何对象中,该变量的值总是和对象中的其他数据在一起,也就是在堆上。
2.对象在c#中默认是通过引用传递的。其实这种说法是错误的,引用类型作为方法参数使用时,参数默认传递是以“值传递”方式来传递的,但值的本身是一个引用。
3.为一个类型的值调用ToString,Equals,GetHashCode方法时(这些方法都是来自Object类),如果该类没有重写这些方法则会发生装箱(装箱,拆箱是很影响性能的)。