C # Сбросить свойство - PullRequest
       15

C # Сбросить свойство

1 голос
/ 20 января 2010

Я пишу функцию Clone для не сериализуемого объекта. Для большинства объектов меня не волнует, копируются ли они мелко, поскольку я не буду вносить в них изменения.

Я начинаю с MemberwiseClone, и это копирует все значения и несколько объектов, таких как словарь конфигурации, просто отлично, но они являются указателями.

EAVEntity newClone = (EAVEntity) this.MemberwiseClone();
newClone.EntityStorageID = Guid.NewGuid();
newClone.Controls.Clear();

Так как мне сбросить указатель, чтобы я мог не указывать на одно и то же место?

1 Ответ

1 голос
/ 20 января 2010

Если быть точным, вы работаете не с «указателями» в их истинном смысле, а с objects, которые являются ссылочными типами. Разница.

Если вы хотите, чтобы свойство вашего скопированного объекта не указывало на тот же другой объект, вы можете установить для него null, новый или любой другой объект по этому вопросу:

newClone.SomeProperty = null;

newClone.SomeProperty = new WhatEverTypeSomePropertyIs();
...