Скажем, у вас есть класс Order со свойством Customer. Должен ли его конструктор копирования создать нового клиента или указать на исходный экземпляр? Возможно, исходный экземпляр - но как насчет Order.Payment?
Хуже того, даже если вы хотите выполнить глубокую копию, вы даже не сможете создать все свои подчиненные объекты, потому что их конструкторы (или сопоставимые методы factory) могут быть недоступны.
Каким образом С# не поддерживает идею конструктора копирования? Вы более чем свободны создавать тот, который копирует настолько, насколько вам нравится.
Ответ 3
Не так ли?
class Foo
{
public Foo (Foo other) // copy ctor
{ ... }
}
Но, может быть, я немного ржавчивый о том, что другие правила применяются в С++ (где был использован термин конструктор копирования).