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