我正在使用 Enumerable.Select() 方法从现有列表中创建一个新的 IEnumerable 列表。这是代码示例:
class ClassA
{
IEnumerable<TypeA> List1;
....
}
class ClassB
{
IEnumerable<TypeB> List2;
...
}
class TypeA
{
//some properties;
IEnumerable<TypeC> Prop3;
}
class TypeB
{
//some properties;
IEnumerable<TypeC> Property3;
}
.
.
.
.
ClassA input; //input data object
ClassB result = new classB();
result.List2 = input.List1.Select(s =>
{
new TypeB()
{
Property1 = s.Prop1,
Property2 = s.Prop2,
Property3 = s.Prop3==null?null:s.Prop3.Select(c=>c)
}
});
在上面的例子中,List2 是 List1 的深拷贝还是浅拷贝?如果没有,我如何获得深层副本?
此外,如果我在执行上述代码之后(在创建结果对象之后)设置 Prop3 = null,则 result.Property3 也变为 null。有人可以解释为什么会这样吗?