c#type a = new type(b);

时间:2011-10-16 18:36:36

标签: c# object constructor

在C#中,如何创建新对象实例,这些实例是现有实例的副本而不是默认副本。

例如:

door a = new door();
door b = a;
door c = new door(a);
b.open();
a.is_open(); // yes
b.is_open(); // yes
c.is_open(); // no

编辑:如果它有用,我在接受答案后做了这个并将其发布在这里。

public class copyable // inherit from this to make you'r object copyable
{
    public heading copy()
    {
        return (heading)MemberwiseClone();
    }
}

2 个答案:

答案 0 :(得分:3)

在构造函数中传递参数时,除了复制所有字段之外,没有简单的方法来创建副本。您可以使用door c = a.MemberwiseClone();创建浅色副本,或者自己动手。

答案 1 :(得分:0)

如果要创建对象的副本,则必须创建一个复制构造函数或将其固有iclonable