Object。

。如图:

   每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值,注意所有的值类型都是密封(sealed)的,所以无法派生出新的值类型。而且System.ValueType 本身是一个类类型,而不是值类型,因为它重写了 Object.Equals(Object),所以对值类型将按照实例的值来比较,而不是 比较引用地址。 
从内存分配上来看,值类型通常分配在线程的堆栈上,作用域结束时,所占空间自行释放,效率高,无需进行地址转换,而引用类型通常分配在托管堆上,由 GC 来控制其回收,需要进行地址转换,效率降低,这也正是c#需要定义两种数据类型的原因之一。c#中值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。

相互转换(装箱/拆箱).

装箱和取消装箱能够使任何类型像对象一样进行处理。

 

 

相关文章:

  • 2021-09-14
  • 2022-12-23
  • 2021-11-19
  • 2021-10-07
  • 2021-07-14
  • 2021-05-27
猜你喜欢
  • 2021-10-03
  • 2021-08-12
  • 2021-06-19
  • 2022-01-31
  • 2021-09-24
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案