c# - 为什么 C# 不支持 Copy Constructor 的概念?

标签 c# copy-constructor

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

请告诉我。

最佳答案

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

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

相关文章:

c# - 标准 Dispose 模式的代码编织助手?

c++ - 返回常量对象并将其分配给非常量对象

c# - GPIO windows IOT Core 的可变电压

c# - 查询时将文本转换为sqlite中的int

c++ - 永远不会调用具有默认参数的复制构造函数

C++ 为什么调用复制构造函数?

c++ - 关于带有复制构造函数的 vs/g++

c++ - 无法将此指针从 const Class<T> 转换为 Class<T>&

c# - 抛出异常时退出 C# 控制台应用程序

c# - RequestPath 可以与默认文件一起使用,就像 dotnet 核心中的静态文件一样吗?