当前位置:网站首页>C#部分——值类型和引用类型

C#部分——值类型和引用类型

2022-06-23 12:02:00 大老婆灰原哀

1.值类型引用类型 (对比)

值类型:

byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。

引用类型:

string 和 class统称为引用类型。

概念:值类型直接存储其值(表示实际数据),引用类型存储对其值的引用(表示指向存储在内存堆中的数据的指针和引用)

基类:值类型都是隐式派生自System.ValueType,引用类型基类为Object

存储:值类型存储在内存栈中,存取速度快,栈的内存是自动释放的;

           引用类型的数据存储在内存堆中,而内存单元中存放的是堆中存放的地址,存取速度慢,堆内存是.Net种的GC(垃圾回收机制)来自动释放

进阶版:

  • 值类型变量声明后,不管是否已经赋值,编译器为其分配内存。
  • 引用类型当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。
  • 值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中。
  • 引用类型的对象总是在进程堆中分配(动态分配)
  • 值类型在栈内分配空间大小因变量类型而异;

  • 引用类型在栈内的空间大小相同;

 

 

原网站

版权声明
本文为[大老婆灰原哀]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_38074938/article/details/116269081