1 class ClassType{ 2 public int num{get;set;} 3 } 4 5 struct StructType{ 6 public int num{get;set;} 7 } 8 9 static void Main(string[] args)10 {11 StructType s1=new StructType();12 s1.num=1;13 14 StructType s2=s1;15 s2.num=2;16 17 ClassType c1=new ClassType();18 c1.num=3;19 20 ClassType c2=c1;21 c2.num=4;22 23 Console.WriteLine(s1.num);24 Console.WriteLine(s2.num);25 Console.WriteLine(c1.num);26 Console.WriteLine(c2.num);27 }
最终输出 1 2 4 4
演变分析:
补充说明:
string虽然是引用类型,但是其具有不变性:字符串一经创建,就不可改变
string a="1";// 字符串a指向“1”string b=a;// 字符串a,b指向“1”a="2";// 字符串横定性是指一个字符串一经创建,就不可改变。那么也就是说当我们改变string值的时候,便会在托管堆上重新分配一块新的内存空间,而不会影响到原有的内存地址上所存储的值。 Console.WriteLine(a);Console.WriteLine(b);
返回 2 1