我有一个非常奇怪的问题。这是我的代码:
<declare E,JV>
<perform some actions with E>
JV.Math_Mul(E);
////
public new void Math_Mul(Matrix a)
{
double[,] vC = new double[a.ColCount, this.RowCount];
externExtensions.MatMul(vC,a.Values ,this.Values, a.RowCount, this.ColCount, a.ColCount);
Values = vC;
CopyB(B.Values,vC);
}
static unsafe void CopyB(double[,] B, double[,] val)
{
int Col = val.GetLength(1);
int j = 0;
fixed (double* pA = B, pB = val)
{
for (int i = 0; i < val.Length; i++)
{
if (i != j * Col)
pA[i-j] = pB[i];
else
j++;
}
}
}
在执行 CopyB 函数后,E 发生了一些事情(这很奇怪,因为它不是 CopyB 的参数)并且 VS 2012 告诉我:无法获取本地或参数“E”的值,因为它在该指令指针处不可用,可能是因为它已被优化掉。代码优化已关闭,此代码运行良好,直到我制作了 CopyB。那么,问题是什么?E会发生什么,我该怎么办?
PS CopyB 用于在乘法后更快地解析矩阵,这是我的数学工具的一部分,我使用块矩阵。
我将非常感谢任何帮助!