Перезаписанные значения списка - PullRequest
0 голосов
/ 02 мая 2020

Я хочу сложить матрицы в список. Сначала я добавляю копии некоторой матрицы в список. Позже я вычисляю другую матрицу (не добавляя ее в список). После этого вычисления все значения моего списка изменились на новую матрицу.

Вот критический фрагмент кода.

public class Algorithm
{
    private List<int[,]> mstack = new List<int[,]>();
    private List<int> stack = new List<int>();
    private List<int> solution = new List<int>();
    private bool solfound = false;
    private int col;

    public List<int> X(int[,] Matrix)
    {
        while (!solfound)
        {
            col = HelpMethods.LeastOneColoumn(Matrix);
            List<int> rowone = HelpMethods.OnesInRow(Matrix, col);

            for (int j = 0; j < rowone.Count; j++)
            {
                mstack.Add(Matrix);
            }

            SubMethod(Matrix, solution);
        }

        return solution;
    }

    private void SubMethod(int[,] Matrix, List<int> solution)
    {
        int row = stack[stack.Count - 1];
        int[,] UpdateMatrix = HelpMethods.UpdateMatrix(Matrix, row);//CRITICAL
    }
}

При отладке я обнаружил, что последняя строка кода выше изменяется Значения списка. Я довольно новичок в C# и не могу найти ни источник проблемы, ни решение проблемы.

Любая помощь очень приветствуется (также в отношении других потенциальных проблем с кодом). Заранее спасибо.

РЕДАКТИРОВАТЬ: После прочтения первых комментариев проблема ясна. Я все еще изо всех сил пытаюсь найти подходящий способ реализовать следующее: я хочу отслеживать матрицы, сохраняя их в таком порядке, чтобы я мог go вернуться к предыдущей матрице, если необходимо, и постоянно добавлять и удалять сохраненные матрицы. Все мои подходы провалились. Как я могу построить такую ​​«память», не сталкиваясь с вышеуказанной проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...