C#中的值类型与引用类型
类型被分为两种:值类型与引用类型,这两种类型的对象在内存中的存储方式不同。
1.值类型只需要一段单独的内存,用于存储实际的数据。
2.引用类型需要两段内存:
(1)第一段存储实际的数据,它总是位于堆中。
(2)第二段是一个引用,指向数据在堆中的存放位置,
3.储存引用类型对象的成员
(1)引用类型对象的数据部分始终存放在堆里面
(2)值类型的对象,或者是引用类型数据的引用部分可以存放在堆里面,也可以存放在栈里面,这依赖于实际环境。
注意:尽管成员A是值类型,但是他是引用类型的实例数据中的一部分,因此和对象的数据一起存放在堆里面。
比如手下面的一段代码:
1 class DriveClss 2 { 3 string fileName = ""; 4 public int driveField=0; 5 public int drivateField = 2; 6 public string Methmod() 7 { 8 return "this is Methmod"; 9 } 10 }
上面的代码中DriveClss 类为引用类型,其数据存放在堆中,而driveField字段为值类型按理来说其数据应该存放在栈中,但是driveField是属于DriveClass类中的成员,所以driveField的数据是存放在堆中的。
总结为:对于引用类型的任何对象,它 所有的数据成员都存放在堆里面,无论它们是值类型还是引用类型。
C# 中的值类型与引用类型
| 值类型 | 引用类型 | |
| 预定义类型 |
sbyte byte float short ushort double long ulong char bool ulong decimal |
object string dynamic |
| 用户定义类型 | struct enum |
class interface delegate array |
微信公公众号 搜索 “不正经小前端” 并关注,和我一起学习海量前端技术
本文来自博客园,作者:七分暖,转载请注明原文链接:https://www.cnblogs.com/lin494910940/articles/9478709.html

浙公网安备 33010602011771号