Если вы уже используете стороннее приложение, например ValueInjecter или Automapper , вы можете сделать что-то вроде этого:
MyObject oldObj; // The existing object to clone
MyObject newObj = new MyObject();
newObj.InjectFrom(oldObj); // Using ValueInjecter syntax
Использование этот метод вам не нужно реализовывать ISerializable или ICloneable на ваших объектах. Это характерно для шаблона MVC / MVVM, поэтому были созданы такие простые инструменты, как это.
см. решение для глубокого клонирования значения инжектора на CodePlex .
Клон () может также бросить Из исключения памяти, когда координаты, определенные в Прямоугольнике, вне границ битового массива. Это не отсечет их автоматически для Вас.
Это - досягаемость, но я часто находил, что при получении по запросу изображений непосредственно от диска, что лучше скопировать их в новый битовый массив и избавиться от ограниченного диском изображения. Я видел большое улучшение потребления памяти при выполнении так.
Dave M. находится на деньгах, также... удостоверяются, что расположили по окончании.
Удостоверьтесь, что Вы называете.Dispose () правильно на Ваших изображениях, в других отношениях неуправляемые ресурсы не будут освобождены. Интересно, сколько изображений Вы на самом деле создаете здесь - сотни? Тысячи?
Я тоже получил это, когда пытался использовать метод клона (), чтобы изменить формат пикселя растрового изображения. Если сервирует память, я пытался преобразовать битовое изображение BPP до 8 бит-индексированного формата, наивно надеясь, что класс растрового изображения волшебно обрабатывает создание палитры и так далее. Очевидно, нет: - /