using System;
class Program
{
static void Main(string[] args)
{
object e1 = 1;
object e2 = 1; e1 = e2; e2 = 2; Console.WriteLine(e1);
Console.WriteLine(e2);
} }
其结果为:e1=1,e2=2按照常理:e1,e2都是引用类型,e1,e2都指向同一个对象,e2变成2,e1也改变成2谁能给个合理的解释?
class Program
{
static void Main(string[] args)
{
object e1 = 1;
object e2 = 1; e1 = e2; e2 = 2; Console.WriteLine(e1);
Console.WriteLine(e2);
} }
其结果为:e1=1,e2=2按照常理:e1,e2都是引用类型,e1,e2都指向同一个对象,e2变成2,e1也改变成2谁能给个合理的解释?
装箱与拆箱
object e2 = 1; //这两个1存储在不同的位置e1 = e2; //仅仅把e2的值赋给e1e2 = 2; Console.WriteLine(e1);
Console.WriteLine(e2);
object e2 = 1; //装箱(生成一个新对象B,并把该对象引用赋予e2)e1 = e2; //e1 e2 指向同一个对象B ,A将被GC回收e2 = 2; //装箱(生成一个新对象C,并把该对象引用赋予e2)这时e1 指向原来B
e2 指向原来C
class Program
{
static void Main(string[] args)
{
A a1=new A();
A a2=new A(); a1 = a2; a2.a = 20; a1 = new A(); Console.WriteLine(a1.a);
Console.WriteLine(a2.a);
} class A
{
public int a=10;
}}