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

Cal*_*ers 1 .net c# expression operators matrix

我注意到可以定义一个自定义类,然后在其中的一些上使用+, - ,/和*等运算符,而不是使用方法来执行此操作.例如,我创建了一个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 *. }));
Run Code Online (Sandbox Code Playgroud)

然而,细算这CodeProject上的网页,并使用XNA框架(后Position = Speed * (float)gameTime.ElapsedTime.TotalSeconds;,其中一个Vector2对象被乘以float使用*),可以使用+, - ,/和*代替.

那么我将如何更改我的类,以便我可以简单地键入以下代码来执行与上面相同的操作?

m1 = m1 * m2 + m2.Inverse - m2.Determinant;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Fra*_* B. 10

MSDN:运算符重载

public static Matrix operator +(Matrix mat)
{
    //do stuff  
}
Run Code Online (Sandbox Code Playgroud)