代码之家  ›  专栏  ›  技术社区  ›  Callum Rogers

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

  •  1
  • Callum Rogers  · 技术社区  · 15 年前

    我注意到,可以定义一个自定义类,然后在其中一些类上使用诸如+、-、/和*之类的运算符,而不是使用方法。例如,我创建了一个执行复杂矩阵代数/微分的矩阵类,并创建了它,以便所有操作都由以下方法控制:

    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;
    

    事先谢谢。

    2 回复  |  直到 15 年前
        1
  •  10
  •   Francis B.    15 年前

    MSDN: Operator overloading

    public static Matrix operator +(Matrix mat)
    {
        //do stuff  
    }
    
        2
  •  2
  •   Dan Diplo    15 年前

    听起来你需要看看 Operator Overloading. 也看到 this tutorial . 玩得开心: