[SIZE=2][COLOR=#0000ff][FONT=Courier New]static [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Main([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] args)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] string[/COLOR][/SIZE][SIZE=2] s1 = [/SIZE][SIZE=2][COLOR=#800000]"Hello"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] string[/COLOR][/SIZE][SIZE=2] s2 = [/SIZE][SIZE=2][COLOR=#800000]"Hello"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].WriteLine(s1.Equals(s2));[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].ReadKey();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]
Конструктор копирования
Я попробовал через сериализацию в MemoryStream, но там SerializationException
Как мне поступить?
Не, не работает. Строки не копирует и некоторые другие элементы тоже не так как надо :-(
Цитата: xxx-lexus
Не, не работает. Строки не копирует и некоторые другие элементы тоже не так как надо :-(
Что не работает?? Функция глубокого или поверхностного копирования?? И какое копирование тебе надо??
По ходу не сработал функция поверхностного копирования для string
Цитата: xxx-lexus
По ходу не сработал функция поверхностного копирования для string
Так зачем тебе поверхностное копирование??? Тебе нужно глубокое, т.к. поверхностное создаёт новый экземпляр класса, но всего его поля ссылаются на объекты оригинала. Вызывай функцию CreateDeepCopy.
В моем классе есть член типа string. Для него это копирование не сработало.
P.S. Извини, если где-то тупанул, просто я ночь не спал, теперь мучаюсь :-(
Цитата: xxx-lexus
В глубоком копировании вызывается неглубокое копирование, а потом для всех данных класса вызывается рекурсивно глубокое копирование, где снова сначала делается неглубокое и т.д.
В моем классе есть член типа string. Для него это копирование не сработало.
P.S. Извини, если где-то тупанул, просто я ночь не спал, теперь мучаюсь :-(
В моем классе есть член типа string. Для него это копирование не сработало.
P.S. Извини, если где-то тупанул, просто я ночь не спал, теперь мучаюсь :-(
Так всё же что не работает?? Ссылки обоих классов ссылаются на одну и ту же строку??? Это не из-за того, что не работает копирование, а из-за того, что CLR не рассматривает одинаковые строки как отдельные экземпляры, а лишь как один. Это хорошо демонстрирует пример:
Код:
Результат будет: true, т.к. s1 и s2 по сути ссылаются на одну и ту же строку. Поэтому поверхностное копирование строки = глубокое копирование строки. На работе обоих классов это никак не отразиться.