编辑
2023-05-16
编程语言
00

值类型:

  • 包含了所有简单类型(整数、浮点、bool、char)、struct、enum,继承自System.ValueType

引用类型:

  • 包含了string,object,class,interface,delegate,array 继承自System.Object

两者的主要区别

  1. 值类型存储在栈内存中,引用类型数据存储在堆内存中,在堆当中存放的只是一个地址,指向堆中的对象
  2. 值类型存取快,引用类型存取慢(为什么?)
    • 值类型存储在栈,栈内存上的对象紧凑而连续,连续存储,想要可以直接获取到,不需要二次寻址
    • 引用类型存储在堆,引用类型分散在堆中,地址不连续,获取到数据之前还需要进行一次二次寻址,变量本身存放是一个地址,需要通过这个地址在堆中找才能得到这个数据
  3. 栈的内存是自动释放的,堆内存是.NET 中会由GC来自动释放
  4. 赋值上有区别,值类型是拷贝赋值,修改副本后不会影响原始的变量;引用类型拷贝的是引用的地址,修改副本实际上修改的是同一个对象,会影响原始的变量(除了String类型是特殊的)

本文作者:xuxuxuJS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!