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

如题所述

(1)值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。
(2)引用类型:对象、数组、函数。

1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char
2、引用类型:包括:对象类型、动态类型、字符串类型。二、具体区别:
1、值类型:byteb1=1;byteb2=b1;Console.WriteLine("{0},{1}。",b1,b2);b2=
2;Console.WriteLine("{0},{1}。",b1,b2);Console.ReadKey();解释:byteb1=1;声明b1时,在栈内开辟一个内存空间保存b1的值1。byteb2=b1;声明b2时,在栈内开辟一个内存空间保存b1赋给b2的值1。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,1。b2=2;将b2在栈中保存的值1改为
2。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,2。
2、引用类型:复制代码。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-26
值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
值类型存取速度快,引用类型存取速度慢。
值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
值类型继承自System.ValueType,引用类型继承自System.Object
栈的内存分配是自动释放;而堆在.NET中会有GC来释放
值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
第2个回答  2012-03-26
晦涩难懂的概念呢,他们都讲了,我就不讲了。就讲一个核心的在你编程生涯中最先要体验到的一个区别:
把一个值类型的变量赋给另外一个值类型的变量,那么改变二者中的任何一个,另外一个不会被改变;
而引用类型则不同,如果把一个引用类型的变量赋给另外一个引用类型的变量,那么改变其中任何一个,另外一个也同样被改变。
至于导致这个区别的原因,就是他们所说的那些……
第3个回答  2012-03-26
引用类型与值类型相同的是,结构体也可以实现接口;
引用类型可以派生出新的类型,而值类型不能;
引用类型可以包含null值,值类型不能(可空类型功能允许将 null 赋给值类型);
引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值。本回答被提问者和网友采纳
第4个回答  2012-03-26
打过魔兽世界吗。。。。
值类型。。。传值。。。(传值就是传了一个副本,人家改也只是改了一个副本的内容,对原始值没有影响)
引用类型。。。传址。。。。(传址就是说你把自己的地址给别人了,人家改都是直接改你内存地址的数据,所以对你原始值有影响)
相似回答