浅拷贝是当我写新的List<List<ClassA>>(lsA)时,它只拷贝成员ls。所以浅层复制第一个列表,而内部列表不是。由于MyList可以访问被放入的每个T(在本例中,它只是通过管道连接到C#的列表),所以它可以对每个T进行浅层复制,所以现在MyList的所有成员都被复制了,并且它可以直接访问变量。
这是什么样的复印件?它只是在它的内部变量上做一个浅拷贝,所以这不是一个深拷贝?由于它的复制变量,它可以接触,而不仅仅是成员级变量,它不再是浅层复制。这种类型的拷贝叫做什么吗?另外,这是不是一个坏的做法,因为它不是一个深拷贝,并且可能没有比浅拷贝更有用?
class ClassA { int a; }
class MyList<T> { List<T> ls; /*i cheat */ }
MyList<MyList<ClassA>> lsA;发布于 2010-10-11 11:46:47
如果数据(对象)是不可变的,那么复制的类型大多是静音的(事实上,没有理由使用不可变的对象进行深度复制!)
请注意,对于List,有一个ctor List(IEnumerable collection)。这反过来只是创建新的对象,依次从现有的Enumerable中添加每个元素,并且规则遵循标准的"ref"/" struct“类型行为(请记住,结构类型可以以令人惊讶的方式打包)。请注意,此构造函数并不是‘复制vars':而是复制传入的可枚举数的item对象值(这是否表示为"ref“对象创建重复对象)。
https://stackoverflow.com/questions/3903368
复制相似问题