Мне нужно сделать копию класса MyGame и использовать его в моей симуляции для игровых испытаний, прежде чем я выберу переход к игре.Клонировать объект, не изменяя значения исходного объекта C#
Например:
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()
- (Board) this.MemberwiseClone()
- совета б = (Board) this.Board
Я читал много статей и форумов по этой теме. Ответ большинству людей использование объектов глубокого клонирования в C#, я пробовал выборки по отношению к моему проекту, но я все же получил мое симуляцию, модифицирующую исходный объект (класс MyGame), а не копию.
Я думаю, что вы возились со ссылкой на новый объект (если ваше клонирование успешно). – Guanxi
Член-клон не работает, если члены являются ** ссылочными типами ** (он будет клонировать указатели, а не заострять объекты). Каждый объект должен поддерживать клонирование. Грязным способом (для сериализуемых объектов) может быть ** сериализация корневого объекта в памяти ** (а затем десериализация клонированного). –
Как вы называете Clone() и как/при изменении кода? –