美好的一天。我在Ububntu 14.04下使用Mono在C#中实现Complex类。当我绑定实现double和Complex之间的乘法时,我发现了一些奇怪的行为。 我的Complex实现类似于
using System;
namespace Mynamespace {
public class Complex {
public double re;//Real part
public double im;//Imaginary part
public Complex (double a, double b){
re = a;
im = b;
}
public static Complex operator *(double k, Complex x){
return new Complex (k * x.re, k * x.im);
}
}}
测试代码就像
...
Complex a = new Complex (1, 1);
double b = 2.0;
Complex c = b * a;
...
奇怪的行为是运算符*返回错误的结果。我注意到当调用*时,double类型的参数在函数中具有错误的值(我传递b = 2并且我看到参数k具有随机值)。
我还试图在不使用运算符的情况下实现该功能:
...
public Complex Multiply(double k){
return new Complex (k * re, k * im)
}
...
以及
...
public static Complex Multiply (double k, Complex x){
return new Complex (k * x.re, k * x.im)
}
...
但我获得alwais同样的行为。 我已经在.net(Windows7)的C#下尝试过,一切都运行良好。
有人对如何解决这个问题有任何建议吗?
祝你好运
费德里科
答案 0 :(得分:0)
我用
之类的东西解决了这个问题public static Complex operator *(object k, complex x){
return new ((double)k * x.re, (double)k * x.im);
}
现在一切顺利。如果您对我所遇到的问题有任何建议,欢迎他们。
祝你好运
费德里科