private void Get_node_voltage()
        {
            for (int i = 0; i < num; i++)
            {
                Complex sum = new Complex(0);
                for (int j = 0; j < num; j++)
                {
                    sum += nodal_impedance_matrix[i, j] * node_current[j];
                }
                node_voltage_c[i] = new Complex(voltage)-sum;
                tem_voltage[i] = node_voltage_c[i].Get_value();
            }
        }
就是这段代码,执行到最后一句的时候同时更新了tem_voltage和另外一个node_voltage数组,导致后续全部错误,求解为什么会这样子。

解决方案 »

  1.   

                    node_voltage_c[i] = new Complex(voltage)-sum;//都重新new了,还不变?
                    tem_voltage[i] = node_voltage_c[i].Get_value();//这个肯定会改变tem_voltage的值啊,你都给人家赋值了
      

  2.   


    大神你应该看错了吧、node_voltage_c和node_voltage不是一个数组
    tem_voltage是要变的,但是node_voltage不应该变的啊、我这段代码根本都没写到node_voltage
      

  3.   

    而且node_voltage每次都变的和tem_voltage值一样
      

  4.   

    “tem_voltage和另外一个node_voltage数组”可能指向了同一个对象(由于编程错误)。可以通过试验来核实,既:
    private void Get_node_voltage()
    {
       bool same = object.ReferenceEqual(tem_voltage, node_voltage);  // true or false?
       //...
      

  5.   

    实验来看的话的确是TRUE,但我还是没有找到哪个地方能产生这种可能,能不能帮我讲下一般什么情况下会出现这样的情况?