Как я могу копировать/клонировать объекты (ссылочный тип) без использования IClonable в С#? ⇐ C#
-
Anonymous
Как я могу копировать/клонировать объекты (ссылочный тип) без использования IClonable в С#?
Я не хочу назначать свойства одно за другим. Пожалуйста, не говорите, что мне нужно назначить 1 на 1. Я знаю IClonable интерфейс, но, к сожалению, предположим, что класс Point взят из другой библиотеки, поэтому я не могу его изменить. Как могу ли я клонировать объект, принадлежащий другим библиотекам?
В приведенном ниже примере, как и ожидалось, когда мы меняем p2, p1 также изменяется. Моя цель — копирование p1, и когда я меняю объект копирования, я не хочу, чтобы основной объект менялся. В его примере я хочу, чтобы p1 остался прежним.
Программа общедоступного класса { общественная статическая пустота Main() { Console.WriteLine("Привет, мир"); Точка p1 = новая точка(5,6); Точка р2= р1; р2.Х = 9; Console.WriteLine("x={0}, y={1}", p1.X, p1.Y); } класс Точка { // Конструктор: общественная точка (int x, int y) { Х = х; Ю = у; } // Реализация свойства: общественный ИНТ X {получить; набор; } общественный ИНТ Y {получить; набор; } } }
Я не хочу назначать свойства одно за другим. Пожалуйста, не говорите, что мне нужно назначить 1 на 1. Я знаю IClonable интерфейс, но, к сожалению, предположим, что класс Point взят из другой библиотеки, поэтому я не могу его изменить. Как могу ли я клонировать объект, принадлежащий другим библиотекам?
В приведенном ниже примере, как и ожидалось, когда мы меняем p2, p1 также изменяется. Моя цель — копирование p1, и когда я меняю объект копирования, я не хочу, чтобы основной объект менялся. В его примере я хочу, чтобы p1 остался прежним.
Программа общедоступного класса { общественная статическая пустота Main() { Console.WriteLine("Привет, мир"); Точка p1 = новая точка(5,6); Точка р2= р1; р2.Х = 9; Console.WriteLine("x={0}, y={1}", p1.X, p1.Y); } класс Точка { // Конструктор: общественная точка (int x, int y) { Х = х; Ю = у; } // Реализация свойства: общественный ИНТ X {получить; набор; } общественный ИНТ Y {получить; набор; } } }
Мобильная версия