值类型和引用类型的区别

C#中两种数据类型:a值类型 b引用类型

值类型的变量直接包含值,将一个值类型变量赋值给另一个值类型变量时,它将复制包含的值.它与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不会复制对象本身.

所有的值类型都是 隐式派生自System.ValueType,与引用类型不同,值类型不可能派生出新的类型,但与引用类型相同的是,结构也可以实现接口.不同的是值类型不包含null值,可空类型允许将null赋给值类型.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值.

值类型主要有结构(struct)、枚举(enum),结构包含了以下几类:int,double,long,float,decimal,bool,等.

引用类型的变量又称之为对象,以便实际数据的引用,声明引用类型的关键字有:class、interface,delegate,内置的引用类型有:object,string

 

值类型(int,)分配在栈中,

引用类型(string,object,class)分配在堆中

posted @ 2018-04-21 17:41  苏梓沫  阅读(119)  评论(0编辑  收藏  举报