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

posted @ 2018-08-14 23:18  七分暖  阅读(98)  评论(0)    收藏  举报
回到顶部