我注意到可以定义一个自定义类,然后对其中的一些类使用 +、-、/和 * 等运算符,而不是使用方法来这样做。例如,我创建了一个执行复杂矩阵代数/微分的 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;
提前致谢。
最佳答案
MSDN:Operator overloading
public static Matrix operator +(Matrix mat)
{
//do stuff
}
关于c# - 如何在数学对象等表达式中使用自定义类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149902/