在我的一次采访中,有人问我这个问题,但我无法确切找出为什么没有这个概念。

请告诉我。

最佳答案

它没有内置在语言中,因为没有合理的默认实现

复制构造函数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/

10-13 07:56
查看更多