如何在数学对象等表达式中使用自定义类?

时间:2009-07-19 13:28:39

标签: c# .net matrix operators expression

我注意到可以定义一个自定义类,然后在其中的一些运算符上使用+, - ,/和*等运算符,而不是使用方法来执行此操作。例如,我创建了一个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;之后,使用Vector2float对象与*相乘),你可以使用+, - ,/和*代替。

那么我怎样才能更改我的课程,以便我可以简单地输入以下代码来完成上述操作?

m1 = m1 * m2 + m2.Inverse - m2.Determinant;

提前致谢。

2 个答案:

答案 0 :(得分:10)

MSDN:Operator overloading

public static Matrix operator +(Matrix mat)
{
    //do stuff  
}

答案 1 :(得分:2)

听起来你需要看Operator Overloading.。另见this tutorial。玩得开心:))