【发布时间】:2013-07-21 05:00:20
【问题描述】:
我正在开发一个矩阵库作为一个学习项目,在此过程中,我重载了 * 运算符来执行矩阵乘法。我还重载了它以处理标量乘法(将矩阵的每个元素乘以双精度)。我的问题是,当运行以下代码时, test2 和 test 都被修改了,这是不希望的。
Matrix test2 = 2 * test;
我确定这是一个问题,因为 Matrix 是一个类,因此是通过引用传递的,但没有将 Matrix 更改为结构(我认为这不合适,并且尝试时不会'似乎不起作用),我看不到任何解决此问题的方法。我该如何解决这个问题?
实际操作符代码是
public static Matrix operator *(Matrix m1, double c)
{
Matrix ret = m1;
for (long i = 0; i < ret.Width; i++) // Iterate over the rows.
{
for (long p = 0; p < ret.Height; p++) // Iterate over the columns.
{
ret[i, p] *= c;
}
}
return ret;
}
【问题讨论】:
标签: c# types reference operators