当我尝试使用 .ToArray() 创建一个包含 List 的深层副本的数组时,我遇到了一个问题。
这是我的测试课:
public class MyClass
{
public Color Color1;
public MyClass(Color color)
{
this.Color1 = color;
}
}
这是我用来执行 List 的 ToArray() 的代码
List<MyClass> listColors = new List<MyClass>();
listColors.Add(new MyClass(Color.Blue));
listColors.Add(new MyClass(Color.Green));
listColors.Add(new MyClass(Color.Red));
MyClass[] arrayColors = listColors.ToArray();
arrayColors[2].Color1 = Color.Purple;
Console.WriteLine(arrayColors[2].Color1.ToString());
Console.WriteLine(listColors[2].Color1.ToString());
结果:
Color [Purple]
Color [Purple]
如您所见,我使用 .ToArray() 方法创建了一个数组 MyClass,然后更改了该数组的第 3 个元素,但我不知道为什么 List listColors 也会更改。
我在带有 .NET 2.0 的 windows xp 上运行此示例。
我尝试在 Windows 7 上运行此示例,结果如下:
Color [Purple]
Color [Red]
所以我认为,这是.NET 框架的问题。
那么在 .NET 2.0 中是否可以像 .NET 4 一样进行 List 的深层复制?这只是一个测试课,在我的工作中,它更大。
非常感谢。