Как использовать пользовательские классы в выражениях, таких как математические объекты? - PullRequest
1 голос
/ 19 июля 2009

Я заметил, что можно определить собственный класс, а затем использовать операторы, такие как +, -, / и *, для ряда из них, а не использовать методы для этого. Например, я создал класс 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 *. }));

Однако, взглянув на на этой странице CodeProject и после использования платформы XNA (Position = Speed * (float)gameTime.ElapsedTime.TotalSeconds;, когда объект Vector2 умножается на float с использованием *), вы можете используйте вместо этого +, -, / и *.

Так как мне изменить свой класс, чтобы я мог просто ввести следующий код, чтобы сделать то же самое, что и выше?

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

Заранее спасибо.

Ответы [ 2 ]

10 голосов
/ 19 июля 2009

MSDN: Перегрузка оператора

public static Matrix operator +(Matrix mat)
{
    //do stuff  
}
2 голосов
/ 19 июля 2009

Похоже, вам нужно посмотреть на Перегрузка оператора. Также смотрите в этом уроке . Веселитесь:)

...