我注意到可以定义一个自定义类,然后在其中的一些运算符上使用+, - ,/和*等运算符,而不是使用方法来执行此操作。例如,我创建了一个Matrix类,它执行复杂的矩阵代数/区分并创建它,以便所有操作都由方法控制:
Matrix m1 = new Matrix(new double[][] { /* Some data */ });
Matrix m2 = new Matrix(new double[][] { /* Some other data */ });
// Returns a new Matrix object equal to the result
m1 = m1.Multiply(m2);
m1 = m1.Add(m2.Inverse);
m1 = m1.Subtract(m2.Determinant);
m1 = m1.ApplyToCombinator(new AlgebraMatrix(new string[][] { /* Some data *. }));
但是,在查看This CodeProject Page之后,以及使用XNA框架(Position = Speed * (float)gameTime.ElapsedTime.TotalSeconds;
之后,使用Vector2
将float
对象与*
相乘),你可以使用+, - ,/和*代替。
那么我怎样才能更改我的课程,以便我可以简单地输入以下代码来完成上述操作?
m1 = m1 * m2 + m2.Inverse - m2.Determinant;
提前致谢。
答案 0 :(得分:10)
MSDN:Operator overloading
public static Matrix operator +(Matrix mat)
{
//do stuff
}
答案 1 :(得分:2)
听起来你需要看Operator Overloading.。另见this tutorial。玩得开心:))