在我的一次采访中,有人问我这个问题,但我无法确切找出为什么没有这个概念。
请告诉我。
最佳答案
它没有内置在语言中,因为没有合理的默认实现。
复制构造函数suffer from many of the same ambiguities as cloning。例如,您要制作浅拷贝还是深拷贝取决于您的特定情况。
假设您有一个带有Order
属性的Customer
类。它的副本构造函数应该创建一个新客户还是指向原始实例?可能是原始实例,但是Order.Payment
呢?
更糟糕的是,即使您确实想要执行深层复制,您也可能甚至无法创建所有从属对象,因为它们的构造函数(或类似的工厂方法)可能无法访问。
如果这还不够的话,this article on Java Design Issues会突出显示其他一些问题(例如类型截断)。
关于c# - 为什么C#不支持Copy Constructor的概念?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2676366/