Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 成员式克隆是否比创建新对象便宜?_C#_.net_Clr_Prototype_Cloning - Fatal编程技术网

C# 成员式克隆是否比创建新对象便宜?

C# 成员式克隆是否比创建新对象便宜?,c#,.net,clr,prototype,cloning,C#,.net,Clr,Prototype,Cloning,我在读关于原型创意设计模式的书时,发现了一条信息,指出克隆对象比创建一个新对象花费更少——通过呼叫新操作员 这是真的吗?如果是,为什么 谢谢克隆确实需要创建一个新对象,因此您不会在初始化的创建部分节省太多。但是,您可以在初始化的其他元素上保存: 如果一个对象需要填充集合,并且构造函数接受未知数量的元素,那么克隆例程可以通过预先调整集合的大小来节省一些处理 如果一个对象在其构造函数中创建了不可变的对象,那么原型可以将对其自身对象的引用直接设置到结果对象中。因为这些被引用的内部对象是不可变的,所以

我在读关于原型创意设计模式的书时,发现了一条信息,指出克隆对象比创建一个新对象花费更少——通过呼叫新操作员

这是真的吗?如果是,为什么


谢谢

克隆确实需要创建一个新对象,因此您不会在初始化的创建部分节省太多。但是,您可以在初始化的其他元素上保存:

  • 如果一个对象需要填充集合,并且构造函数接受未知数量的元素,那么克隆例程可以通过预先调整集合的大小来节省一些处理
  • 如果一个对象在其构造函数中创建了不可变的对象,那么原型可以将对其自身对象的引用直接设置到结果对象中。因为这些被引用的内部对象是不可变的,所以可以共享它们。这样,您的系统将在创建这些依赖对象时节省成本

克隆对象似乎意味着创建一个新对象。你能给我一个报价吗?