Я видел две разные реализации сувениров на .NET.
Один из них довольно прост - объект создает еще один экземпляр самого себя.
Другой - сериализация объекта с использованием BinaryFormatter и MemoryStream.
Какой метод предпочтительнее? Может ли кто-нибудь указать на преимущества / недостатки каждого подхода?
Кстати, мне интересно взглянуть на это с точки зрения использования ресурсов / производительности разработчика. Прошу прощения за то, что не сказал об этом первым.
Предполагая, что сувенир не нужно сохранять, что предпочтительнее?
С точки зрения продуктивности разработчика сериализация побеждает. Несколько строк, которые являются общими для любого объекта, более эффективны, чем необходимость вручную создавать клон, который включает, возможно, частные конструкторы, назначения полей и т. д.
Но опять же, возможно, сериализация - это тяжело - я не уверен.





если вы собираетесь сохранить сувенир, используйте метод сериализации
в противном случае клонированный объект в порядке
Я думаю, что выбор того, как создать / сохранить сувенир, зависит от того, как долго вы хотите, чтобы этот сувенир сохранялся, и нужно ли вам передавать этот сувенир по доменам приложений. Если сувенир существует только в течение короткого времени и используется только тем же потоком, то клонированный объект является разумным. Если сувенир необходимо сохранить или передать другому домену приложения, предпочтительнее сериализация. Если сувенир долгоживущий, вы можете даже захотеть сериализовать его и сохранить извне (в файле или БД).
Назовите меня сумасшедшим и неэффективным, но я использую StringBuilder и из строки.
Часто BinaryFormatter и MemoryStream работают без написания большого количества кода, но Clone () требует добавления кода в каждый класс.
В противном случае я не увижу совпадения, чтобы выбрать один из двух методов, если память не требуется.