Доброе утро,
Я делаю программу, которая создает шаги из приведенного выше и добавляет их в общий список.
Вот мой код:
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));
}
I Я поставил несколько маркеров, чтобы объяснить вам мою проблему:
В 1 , Я клонирую свой список и добавляю его в «Решение».
В 2 , я переворачиваю список Ordre , , у которого больше нет ссылки на список, который я клонировал , потому что это клон и, следовательно, изменения не внесены в «Решение».
В 3 видно Я меняю параметры объекта в «Порядке» . Вот где и происходит ошибка! Поэтому я изменяю свои параметры в объекте, и мой список, который я клонирую , не должен изменять его объект параметра, потому что он был клонирован, но проблема в том, что список, который я клонировал в начале, также изменяет эти параметры объекта .
на заметку: она изменила свои настройки, но не свой порядок, как шаг 3 с этим списком.
Мне очень жаль, если это было непонятно, если вы хотите лучшего объяснения скажите мне.
Спасибо за помощь:)
РЕДАКТИРОВАТЬ: Вот объект:
internal class Crêpe
{
internal int Nombre { get; set; }
internal bool FaceCraméBienPlacé { get; set; }
public Crêpe(int position, bool faceCraméBienPlacé)
{
Nombre = position;
FaceCraméBienPlacé = faceCraméBienPlacé;
}
}