我正在使用一个名为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;
}
我在最后一行一个突破点。如果在监视窗口中,我接受任何矩阵项目并对其进行更改,它将会改变太新的矩阵,因为所有BigNumDec都是参考类型(来自其创建者的糟糕设计决策?)。我怎样才能做到这一点?我需要对newMatrix进行修改,所以我必须首先从矩阵中复制它。
编辑:现在尝试使用整数,但它发生的是一样的。我会不会发生值类型?
BigNumDec是不可变的。
一个简单的它适用于整数。它能与BigNumDec一起使用吗?我会说不。 – 2009-10-23 07:35:30
它似乎工作。现在我很困惑。 – 2009-10-23 07:36:27
你能否解释一下,为什么不可改变或者不会在这里有所作为?当它检测到我想改变它的值时,它是否会在幕后创建一个新的? – 2009-10-23 07:39:13