调用this.MemberwiseClone() 就可以创建一个对象的浅副本, 断开对象引用的最快办法.
后来发现这样做有一个问题... 比如下面这个类 :
public class A
{
public Buff b;
public int i = 0;
public A GetCopy()
{
return this.MemberwiseClone() as A;
}
}
我创建A类的一个实例,复制出一个a1, 然后修改一下a中的b
A a = new A();
A a1 = a.GetCopy();
a.b = "修改一下";
之后发现 a1 中的 b也被修改了... 因为b本身也是一个引用类型, 看来MemberwiseClone() 这种复制方式并不怎么好用, 虽然断开了A的引用, 但却无法断开A内部的引用类型的引用.