主题:引用类型的问题
class A
{public int n;};
A x=new A;
A y;
y=x;
这个时候y和x都指向同一个引用,如果再添加下面两个语句:
y.n=3;
Console.WriteLine(x.n); //注意:括号里是x.n不是y.n
此时输出结果是3而不是0;
对于此例,在C++中y=x;语句只是简单的值复制(浅拷贝),x和y是不同的对象,都有为自己分配的存储空间.
但是C#中x和y指向同一个对象的引用的事实此时不是我想要的.我想在y=x;这个语句执行完后有C++那种浅拷贝的效果,我不想重载=然后在它里面用new开辟空间,把成员值一个一个复制到这个新对象上,最后再返回这个对象.请问我应该怎么做?(刚接触C#,可能C#里面有非常简单的方法实现这个作用,不过我不知道)
{public int n;};
A x=new A;
A y;
y=x;
这个时候y和x都指向同一个引用,如果再添加下面两个语句:
y.n=3;
Console.WriteLine(x.n); //注意:括号里是x.n不是y.n
此时输出结果是3而不是0;
对于此例,在C++中y=x;语句只是简单的值复制(浅拷贝),x和y是不同的对象,都有为自己分配的存储空间.
但是C#中x和y指向同一个对象的引用的事实此时不是我想要的.我想在y=x;这个语句执行完后有C++那种浅拷贝的效果,我不想重载=然后在它里面用new开辟空间,把成员值一个一个复制到这个新对象上,最后再返回这个对象.请问我应该怎么做?(刚接触C#,可能C#里面有非常简单的方法实现这个作用,不过我不知道)