标签:style blog http color os ar strong 数据 sp
存储不同:
值类型存储在堆栈中,引用类型存储在托管堆上.
值类型举例:
i=20;
j=i;
上面的语句在内存的两个地方存储值都是20;
引用类型举例:
class Vector { public long value { get; set; } } class Program { static void Main(string[] args) { Vector x, y; x = new Vector(); x.value = 30; y = x; Console.WriteLine(y.value); y.value = 50; Console.WriteLine(x.value); Console.ReadKey(); } }
上面的代码,x赋值,y的值也跟着改变,y赋值,x的值也跟着改变,结果为30和50
不一样的引用类型String
string s1,s2 ;
s1 = "123";
s2 = s1;
Console.WriteLine("s1:" + s1);
Console.WriteLine("s2:" + s2);
s1 = "456";
Console.WriteLine("s1:" + s1);
Console.WriteLine("s2:" + s2);
Console.ReadKey();
结果:s1:123
s2:123
s1:456
s2:123
从结果可见,改变s1的值对s2没有影响,这是因为:字符串是不可改变的,修改其中一个字符串,就会创建新的string对象,而
另一个字符串不会发生任何变化.
小结:在C#中基本数据类型如bool和long都是值类型,如果声明一个bool变量,并给他赋予给另一个bool变量的值,
在内存中就会有两个bool值,如果以后修改第一个bool的值,第二个bool变量的值也不会改变.如果要把自己的类型
定义为值类型就应把它声明为一个结构.
标签:style blog http color os ar strong 数据 sp
原文地址:http://www.cnblogs.com/piaoguo/p/3994496.html