Я использую класс BigNumDesc, который представляет число. У меня есть зубчатый массив этих чисел, которые представляют собой матрицу. я сначала объявить эту матрицу следующим образом:Глубокие типы ссылок копирования
BigNumDec[][] matrix = new BigNumDec[][] {
new BigNumDec[] { 1, 2 },
new BigNumDec[] { 3, 4 }
};
Теперь, у меня есть метод, который я хочу назвать:
static BigNumDec[][] GetStrictlyUpperTriangle(BigNumDec[][] matrix)
{
BigNumDec[][] newMatrix = new BigNumDec[matrix.Length][];
matrix.CopyTo(newMatrix, 0);
return null;
}
У меня есть брейк-пойнт в последней строке. Если в окне просмотра я беру любой элемент матрицы и меняю его, он изменит слишком newMatrix, так как все BigNumDec являются ссылочными типами (плохое дизайнерское решение от создателя этого?). Как я могу это сделать? Мне нужно внести изменения в newMatrix, поэтому я должен сначала скопировать его из матрицы.
Редактировать: Пробовал то же самое теперь с ints, но это происходит точно так же. Я бы это не случилось с типами ценностей?
BigNumDec является неизменным.
С простой для этого хорошо работает с ints. Будет ли это хорошо работать с BigNumDec? Я бы сказал, нет. –
Кажется, что работает. Теперь я смущен. –
Не могли бы вы объяснить, почему быть неизменным или нет, если это возможно, имеет значение здесь? Когда он обнаруживает, что я хочу изменить значение, он создает новый за кулисами? –