C# 即使克隆列表,列表中对象的参数也会更改

C# 即使克隆列表,列表中对象的参数也会更改,c#,list,C#,List,早上好 我制作了一个软件,从上面创建步骤,并将它们添加到一个通用列表中 这是我的密码: List<List<Crêpe>> Solutions = new List<List<Crêpe>>(); Solutions.Add(new List<Crêpe>(Ordre)); // 1. for (int i = NombreMax; i > 0; i--) {

早上好

我制作了一个软件,从上面创建步骤,并将它们添加到一个通用列表中

这是我的密码:

        List<List<Crêpe>> Solutions = new List<List<Crêpe>>(); 
        Solutions.Add(new List<Crêpe>(Ordre)); // 1.

        for (int i = NombreMax; i > 0; i--)
        {
            Ordre.Reverse(0, positionDuNombreAChercher); // 2.

            for (int n = 0; n < positionDuNombreAChercher; n++)
            {
                Ordre[n].FaceCraméBienPlacé = !Ordre[n].FaceCraméBienPlacé; // 3.
            }

            Solutions.Add(new List<Crêpe>(Ordre)); 

        }
你复制了名单,但你没有复制名单

要复制crêpe,可以在
crêpe
类中编写
GetCopy
方法:

public Crêpe GetCopy() => new Crêpe(Nombre, FaceCraméBienPlacé);
然后使用
Select
创建每个
Crêpe
的副本,然后使用
ToList
创建新列表:

Solutions.Add(Ordre.Select(x => x.GetCopy()).ToList()); // 1.

您还应该更改外部循环中的最后一行。

Ordre的代码在哪里?
Solutions.Add(Ordre.Select(x => x.GetCopy()).ToList()); // 1.