值类型:
- 包含了所有简单类型(整数、浮点、bool、char)、struct、enum,继承自System.ValueType
引用类型:
- 包含了string,object,class,interface,delegate,array
继承自System.Object
两者的主要区别
- 值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址
- 值类型存取快,引用类型存取慢(为什么?)
- 值类型存储在栈,栈内存上的对象紧凑而连续,连续存储,想要可以直接获取到,不需要二次寻址
- 引用类型存储在堆,引用类型分散在堆中,地址不连续,获取到数据之前还需要进行一次二次寻址,变量本身存放是一个地址,需要通过这个地址在堆中找才能得到这个数据
- 栈的内存是自动释放的,堆内存是.NET 中会由GC来自动释放
- 值类型直接存放实际的数据,⽽引⽤类型存放的则是数据的地址,即对象的引⽤
- 值类型变量直接把变量的值保存在堆栈中,引⽤类型的变量把实际数据的地址保存在堆栈中
本文作者:xuxuxuJS
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!