【发布时间】:2013-07-25 23:03:57
【问题描述】:
在我选择要玩的动作之前,我需要复制一个 MyGame 类并将其用于我的模拟游戏试验。
例如:
public class MyGame
{
private int Start;
private Board board;
//Constructor
public void Play()
{
//play game
}
public object Clone()
{
}
}
public class Board
{
private int Count;
//Constructor
//Some methods and properties
public object Clone()
{
}
}
为我尝试过的方法 Clone() 编写代码
- MemberwiseClone()
- (板)this.MemberwiseClone()
- Board b =(Board)this.Board
我已经阅读了很多关于这个主题的文章和论坛。大多数人的答案 使用的是 C# 中的深度克隆对象,我尝试了关于我的项目的示例,但我仍然 让我的模拟修改原始对象(MyGame 类)而不是副本。
【问题讨论】:
-
我认为你搞砸了对新对象的引用(如果你的克隆成功的话)。
-
如果成员是引用类型,则按成员方式克隆不起作用(它将克隆指针,而不是指向对象)。每个对象都必须支持克隆。一种肮脏的方式(对于可序列化的对象)可以是序列化内存中的根对象(然后反序列化克隆的对象)。
-
如何调用 Clone() 以及如何/何时修改代码?
-
哦,好吧抱歉我忘了,每个类都实现了 ICloneable 接口。
-
只能创建一个新对象并将其属性设置为与原始对象相同的值吗?