重载指数C#和指数运算符

时间:2012-05-28 17:14:15

标签: c# operator-overloading overloading exponent

有没有办法在C#中重载指数?我知道在某些语言中(不能说出任何语言),^用于指数函数,但在C ++和C#中,^是按位XOR运算符,2^x 3}},但这不是我想要重载的东西。我不想超载电源功能或其他什么

例如。我知道我可以使用(1 << x)进行System.Math.Pow(base, exp);。所以,我的第二部分,是C#中的指数运算符还是我必须坚持使用{{1}}

2 个答案:

答案 0 :(得分:4)

您可以创建一个扩展方法作为Math.Pow()的快捷方式,这实际上是一件很常见的事情。

也许:

public static double Pow(this double a, double b)
{
    return Math.Pow(a, b);
}

那么你可以像这样使用它:

myDouble = myDouble.Pow(3);

在扩展方法方面,您可以使用各种格式。如果你的目标很简洁,我相信你能想出一些你会满意的东西。

答案 1 :(得分:1)

基本方言和Matlab使用^作为指数运算符。其他语言(Fortran,Python,F#)使用**。遗憾的是,C#没有指数运算符。

虽然可以在C#中重载^ XOR运算符,但不建议这样做,因为让操作符具有异常且无法记录的含义会让人感到困惑。

即使这样,只有当基数和指数操作数中的任何一个或两者都是用户定义的类型时,才可能进行重载。你不能只定义'^'来表示取代,例如,双倍。