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

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

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

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

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

相关文章:

  • 2021-10-10
  • 2021-11-11
  • 2021-08-30
  • 2022-01-26
  • 2021-07-01
  • 2022-01-28
  • 2021-10-19
  • 2021-08-23
猜你喜欢
  • 2021-11-22
  • 2022-12-23
  • 2021-06-05
  • 2021-10-06
相关资源
相似解决方案