class和struct的区别

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

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

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

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

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

转载于:https://www.cnblogs.com/hill/archive/2006/10/20/534867.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值