Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Language agnostic 这种复制品叫什么?它是坏的吗?_Language Agnostic - Fatal编程技术网

Language agnostic 这种复制品叫什么?它是坏的吗?

Language agnostic 这种复制品叫什么?它是坏的吗?,language-agnostic,Language Agnostic,浅复制是当我编写新的List(lsA)时,它只复制成员ls。因此,浅层复制第一个列表,而内部列表不复制。由于MyList可以访问放入的每个T(在本例中,它只是通过C#的列表进行传输),因此它可以对每个T进行浅拷贝。所以现在MyList的所有成员都被复制,它可以直接访问变量 这是什么样的副本?它只是在内部变量上做了一个浅拷贝,所以这不是一个深拷贝?因为它的复制变量可以触摸,而不仅仅是一个memberwise变量,它不再是一个浅拷贝。这种复制品叫什么?因为它不是一个深度副本,并且可能没有比浅层副本更

浅复制是当我编写新的
List(lsA)
时,它只复制成员ls。因此,浅层复制第一个列表,而内部列表不复制。由于MyList可以访问放入的每个T(在本例中,它只是通过C#的列表进行传输),因此它可以对每个T进行浅拷贝。所以现在MyList的所有成员都被复制,它可以直接访问变量

这是什么样的副本?它只是在内部变量上做了一个浅拷贝,所以这不是一个深拷贝?因为它的复制变量可以触摸,而不仅仅是一个memberwise变量,它不再是一个浅拷贝。这种复制品叫什么?因为它不是一个深度副本,并且可能没有比浅层副本更有用,所以它也是一种不好的做法吗

class ClassA { int a; }
class MyList<T> { List<T> ls; /*i cheat */ }
MyList<MyList<ClassA>> lsA;
ClassA{inta;}
类MyList{List ls;/*i cheat*/}
MyList lsA;

我真的不知道下面的代码想说什么,不过,我还是想问一下(问题不是语言不可知):

如果数据(对象)是不可变的,那么复制的类型通常是静音的(事实上,没有理由使用不可变的对象进行深度复制!)。通过减少不变性的数量,我通常没有深拷贝(几乎从来没有),而使用标准构造函数的“浅拷贝”效果很好

注意,例如,对于List,有一个ctor。这反过来只会创建一个新对象,依次添加现有可枚举项中的每个元素,规则遵循标准的“ref”/“struct”类型行为(请记住,结构类型可以以令人惊讶的方式装箱)请注意,此构造函数不是“复制变量”:而是复制传入的可枚举项的项对象值(这并不意味着为“ref”对象创建重复对象)。