0

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

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

4

2 回答 2

5

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

也许:

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

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

myDouble = myDouble.Pow(3);

当涉及到扩展方法时,您可以使用多种格式。如果你的目标是简洁,我相信你可以想出一些你会满意的东西。

于 2012-05-28T17:35:19.513 回答
1

指数运算符的基本方言和 Matlab 使用^。其他语言(Fortran、Python、F#)使用**. 不幸的是,C# 没有指数运算符。

尽管可以^在 C# 中重载 XOR 运算符,但不建议这样做,因为具有不寻常且未记录的含义的运算符会令人困惑。

即便如此,只有当基数和指数操作数中的一个或两个是用户定义的类型时,重载才是可能的。你不能只定义'^'来表示取幂,比如双打。

于 2012-05-28T17:18:53.623 回答