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 になります。誰かがなぜこれが起こっているのか説明できますか?