【发布时间】:2018-10-15 15:30:49
【问题描述】:
我知道您可以为自定义类型执行运算符重载 (+-*/)。有没有办法对自定义数学函数做同样的事情?这将使向量操作更自然(如在 R 中)。示例:
vector = [1, 2, 3, 4, 5]
vector + vector = [2, 4, 6, 8, 10] # can be achieved with operator overloading
vector * 5 = [5, 10, 15, 20, 25] # can be achieved with operator overloading
pow(vector, 2) = [ 1, 4, 9, 16, 25 ] # is it possible in C#?
更新
从下面的答案中,我看到“函数重载”是不可能的(可能没有多大意义),最好的处理方法是创建自定义数学函数库(静态类)。
该解决方案很好,尽管有没有办法将“自定义函数”与其他自定义类型重用?假设我有数字(int/float)、复数、向量和矩阵(向量数组)。我希望我的 Pow 函数适用于所有 4 种类型(它应该为对象中的每个数字元素提供动力)。
另外,有没有办法让函数根据输入类型做不同的事情?例如
abs(-1) = 1 # for integer abs just change the sign if negative
abs(4+3i) = sqrt(4^2+3^2) = 5 # smth different for complex number
【问题讨论】:
-
您只需编写自己的
pow方法。这不能满足你的需求吗? -
那个,或者你可以重载
^操作符,但这可能会带来一些混乱。 -
不,这只是伪代码。假设我有使用整数/浮点数的标准数学库,想知道是否有办法将它与向量类型重用。
-
pow 只是一个例子。我想将它与 sin、cos、sqrt 等其他函数一起使用
标签: c# .net operator-overloading