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

标签 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; 其中 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/

相关文章:

c# - 如何将消息从一个桌面应用程序传递到同一台机器上运行的另一个应用程序?

C# 文件浏览至 textbox.text only .doc .txt 等

c# - 与其构造函数方法相比,应该如何使用 Form.Load 事件?

c# - WebSphere MQ .NET API

c - 元素随机分布的稀疏矩阵的数据结构

arrays - 删除矩阵中的零并减小大小

c# - 我们如何使用统一在后台保存大量数据?

c# - 在中间件中为什么这个值只设置一次?

c# - .NET C# float.Parse 将不同的结果返回给 double.Parse

python - 列出列表中每个列表中的特定位置(python)