Я хочу сложить матрицы в список. Сначала я добавляю копии некоторой матрицы в список. Позже я вычисляю другую матрицу (не добавляя ее в список). После этого вычисления все значения моего списка изменились на новую матрицу.
Вот критический фрагмент кода.
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 вернуться к предыдущей матрице, если необходимо, и постоянно добавлять и удалять сохраненные матрицы. Все мои подходы провалились. Как я могу построить такую «память», не сталкиваясь с вышеуказанной проблемой?