C#值类型和引用类型的区别

时间:2014.05.30 发布人:栉风沐雨_2015

C#值类型和引用类型的区别

已解决问题

谷歌栉风沐雨_2015用户在2014.05.30提交了关于“死人经C#值类型和引用类型的区别”的提问,欢迎大家涌跃发表自己的观点。目前共有5个回答,最后更新于2025-02-27T15:06:11。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,不知道说什么,送你一朵小红花吧 !

希望以下的回答,能够帮助你。

第1个回答

用户名:IT客  

值类型和引用类型的区别在于,值类型的变量直接存放实际的**,而引用类型的变量存放的则是**的地巴手达址,即对象的引用。

  值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际**的地址保实伯水集代守自存在堆栈中,而实际**则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储可变长度的**,收察罗显于范密如字符串类型;而鱼取爱换艺剂端同其沙降堆栈则用于存储固定长度的**,如整型类型的**int(每个int变量占用四个字节)。由**存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用,即在堆栈中保存的是同一个堆的地址。在进行**操作时,对于值打米类型,由于每个变量都有自己的值,因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的**进行操作就是对这个变量在堆中胜革甲觉道则之的**进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。

第2个回答

用户名:Agincourt  

最大的区别是值类型在stack上,引用类型在heap上。换却服状线别盾氧展stack的大小有限制,但是分配、释放快。heap的大小限制一般就是系统可用内存限制,但是分配、释放慢

第3个回答

用户名:CryDog  

值类型是通过操作系统管理回收的,引用类型是GC负责回收的

第4个回答

用户名:agzf678  

说白了一个存在堆上一个存在栈上。一个存值一个材测改下第下口游存地址

第5个回答

用户名:苏铭  

值类型是直接访问,引用类型是间接访问的。