【引用类型和值类型的区别】
//引用类型(由于使用了‘class’) class SomeRef { public Int32 x; } //值类型(由于使用了‘struct’) struct SomeVal { public Int32 x; } static void ValueTypeDemo() { SomeRef r1 = new SomeRef(); //在堆上分配 SomeVal v1 = new SomeVal(); //在栈上分配 r1.x = 5; //提另指针 v1x = 5; //在栈上修改 Console.WriteLine(r1.x); //显示”5“ Console.WriteLine(v1.x);//显示”5“ SomeRef r2 = r1; //只复制引用(指针) SomeVal v2 = v1;//在栈中分配并复制成员 r1.x = 8;//r1.x和r2.x都会改变 v1.x = 9;//v1.x 会更改,但v2.x不变 Console.WriteLine(r1.x);//显示"8" Console.WriteLine(r2.x);//显示"8" Console.WriteLine(v1.x);//显示"9" Console.WriteLine(v2.x);//显示"5" }
【图解】
时间: 2024-10-09 18:13:15