值类型与引用类型
先上代码
1 class TestClass 2 { 3 public int val; 4 } 5 struct TestStruct 6 { 7 public int val; 8 } 9 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 TestClass testClass1 = new TestClass(); 15 TestClass testClass2 = testClass1; 16 testClass1.val = 10; 17 testClass2.val = 20; 18 19 TestStruct testStruct1 = new TestStruct(); 20 TestStruct testStruct2 = testStruct1; 21 testStruct1.val = 30; 22 testStruct2.val = 40; 23 24 WriteLine($"testClass1.val = {testClass1.val}"); 25 WriteLine($"testClass2.val = {testClass2.val}"); 26 WriteLine($"testStruct1.val = {testStruct1.val}"); 27 WriteLine($"testStruct2.val = {testStruct2.val}"); 28 29 ReadKey(); 30 31 } 32 }
运行结果为
出现这种情况是因为结构为值类型,类为引用类型
书里给出的解释是把对象赋给变量时,实际是把带有一个指针的变量赋给了该指针所指向的对象。
画一个我理解的图
结构是值类型,并不包含指针,所以,只是单纯的把第一个结构的所有信息复制到第二个结构中