有没有办法在C#中复制一个对象?类似这样的操作:
我希望它们是相等的,这样所有的数据成员都是相同的,但不共享同一内存位置。
var dupe = MyClass(original);
我希望它们是相等的,这样所有的数据成员都是相同的,但不共享同一内存位置。
var dupe = MyClass(original);
可以考虑这样做:
public class MyClass
{
int i;
double d;
string something;
public MyClass(int i, double d) {}
public MyClass Clone()
{
return (new MyClass(i, d));
}
}
或者,如果您在构建新对象时还需要复制其他通常不知道的内容:
public MyClass CloneMore()
{
MyClass obj = new MyClass(i, d);
obj.something = this.something;
return (obj);
}
使用以下方式进行调用:
MyClass us = them.Clone();
~~~
一种可能性是克隆它。您必须实现接口ICloneable
和Clone
方法。
你是指像C++中存在的复制构造函数吗?
C#中不存在这种构造函数。 你可以编写自己的(这很繁琐),或者编写一个“Clone”方法,该方法使用序列化创建一个新实例,该实例具有与原始类完全相同的值。
您可以对当前实例进行序列化,反序列化它,并返回反序列化结果。缺点是您的类必须是可序列化的。