class和struct的区别

C#中很多数据类型都是用struct类型定义的,属于值类型。
C#定义的class属于引用类型

具体分析二者的区别,就要提到堆(heap)、栈(stack),栈是一种后进先出的数据结构,是处理器中支持的一块内存区域,存放的是一些局部变量;堆是一块动态分配的内存区域。

C#中值类型分配在栈中,引用类型则分配到堆中;

C#中一切都是对象,包括数据类型;前面我们提到C#中的一些数据类型是用struct定义的,struct是从ValueType继承来的,而ValueType是从Object继承来的,所以值类型也是对象。

C#内存回收器会在栈框架结束后回收栈内存,比如一般栈框架是在方法中定义,那么方法结束后,里面定义的一些变量就会被回收;
而堆内定义的对象在对象最后一次引用之后才能回收,从这一点上二者有很大的区别。

posted on 2006-10-20 16:02  hill  阅读(330)  评论(0编辑  收藏  举报

导航