值类型和引用类型的详细讨论_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 值类型和引用类型的详细讨论

值类型和引用类型的详细讨论

 2017/9/28 22:43:14  redlkop  程序员俱乐部  我要评论(0)
  • 摘要:值类型:(原话定义)值类型的变量直接包含值,换言之变量引用的位置就是值在内存中实际存储的位置。这句话也就是说,值类型的赋值是不会引用同一内存位置的,除了out和ref参数,更改原始变量不影响其它变量的值(因为变量歌有各的位置)栈依次向下:intnumber1=42;charletter='A';floatpi=3.14;intnumber2=number1;总结:值类型的赋值会单独开辟一个新的内存空间,这就引发了另两个问题,第一个是空间占用问题,所以,规范是不要创建内存大于16字节的值类型
  • 标签:讨论 值类型

值类型:(原话定义)值类型的变量直接包含值,换言之变量引用的位置就是值在内存中实际存储的位置。

这句话也就是说,值类型的赋值是不会引用同一内存位置的,除了out和ref参数,更改原始变量不影响其它变量的值(因为变量歌有各的位置)

依次向下:

int number1 =42;

char letter ='A';

float pi = 3.14;

int number2 = number1;

总结:值类型的赋值会单独开辟一个新的内存空间,这就引发了另两个问题,第一个是空间占用问题,所以,规范是不要创建内存大于16字节的值类型。第二个问题,由于值类型的值一般只能短时间存在,大多情况下,值类型的值和临时值是存储在称为栈的临时存储区中,然而,临时区清理的代价低于需要进行垃圾回收的堆,但是,值类型会更加频繁地去复值,增加性能开销,这点得注意;

引用类型:它得值是对一个对象的实例的引用,引用类型的变量是引用(通常是内存地址),去那个位置找到对象实例的数据。因此,”运行时“要从变量读取引用,然后根据引用找到资源,从而到达实际包含实例数据的内存位置。即引用类型的变量关联了两个存储位置。

引用类型指向堆,但是引用类型与变量关联的存储位置和值类型并没有区别;若变量短时间存在,就在临时存储区分配它,对于引用类型的变量,它的值要么是null,要么是对需要进行垃圾回收的堆上的一个存储位置的引用。

总结:由于引用类型只复制对数据的引用,因此两个变量客引用相同的数据,这样,赋值和方法调用都将改变相同引用变量的值;

 

 

 

上一篇: 映客发力内容 抛10亿元“大计划” 下一篇: 没有下一篇了!
发表评论
用户名: 匿名