我的C#程序有问题。我想为我的C#代码中的二维列表分配一些3 * 3矩阵的值。这是我的代码的一部分:为什么列表成员在C#中不需要地更改?
List<double> coefs = new List<double>();
List<List<double>> a = new List<List<double>>();
List<double> b = new List<double>();
List<double> u3 = new List<double>();
List<double> x2 = new List<double>();
List<double> x3 = new List<double>();
List<double> x4 = new List<double>();
List<double> xy = new List<double>();
List<double> x2y = new List<double>();
for (int i=0;i<3;++i)
u3.add(0);
for (int i = 0; i < 3; ++i)
{
a.Add(u3);
b.Add(0);
}
for (int i = 0; i < n; ++i)
{
x2.Add(Math.Pow(x[i], 2));
x3.Add(Math.Pow(x[i], 3));
x4.Add(Math.Pow(x[i], 4));
xy.Add(x[i] * y[i]);
x2y.Add(Math.Pow(x[i], 2) * y[i]);
}
a[0][0] = n;
a[0][1] = sum(x, n);
a[0][2] = sum(x2, n);
a[1][0] = a[0][1];
a[1][1] = a[0][2];
a[1][2] = sum(x3, n);
a[2][0] = a[0][2];
a[2][1] = a[1][2];
a[2][2] = sum(x4, n);
b[0] = sum(y, n);
b[1] = sum(xy, n);
b[2] = sum(x2y, n);
x和y是数据列表。在我的代码结束时,我计算并分配了一个[0] [0],一个[0] [1]和一个[0] [2]。但是,当程序到达[1] [0],[1] [1]和[1] [2]和...旧值(包括[0] [0],a [0] [1]和a [0] [2]自动改变。有什么问题,我该如何解决它?
谢谢。
不能说我是你的命名约定的粉丝... – LarsTech
你将相同的列表引用('u3')添加到'a'中3次。 – juharr