2023-05-16
编程语言
00

值类型:

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

引用类型:

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

两者的主要区别

  1. 值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址
  2. 值类型存取快,引用类型存取慢(为什么?)
    • 值类型存储在栈,栈内存上的对象紧凑而连续,连续存储,想要可以直接获取到,不需要二次寻址
    • 引用类型存储在堆,引用类型分散在堆中,地址不连续,获取到数据之前还需要进行一次二次寻址,变量本身存放是一个地址,需要通过这个地址在堆中找才能得到这个数据
  3. 栈的内存是自动释放的,堆内存是.NET 中会由GC来自动释放
  4. 值类型直接存放实际的数据,⽽引⽤类型存放的则是数据的地址,即对象的引⽤
  5. 值类型变量直接把变量的值保存在堆栈中,引⽤类型的变量把实际数据的地址保存在堆栈中

本文作者:xuxuxuJS

本文链接:

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