有没有办法在 C# 中重载指数?我知道在某些语言中(无法说出任何名字),^
用于指数函数,但在 C++ 和 C# 中,^
是按位 XOR 运算符,可以重载,但这不是我想要的超载。我不想超载电源功能或其他任何东西
例如。我知道我可以2^x
用(1 << x)
. 所以,我的第二部分,C# 中有指数运算符还是我必须坚持使用System.Math.Pow(base, exp);
有没有办法在 C# 中重载指数?我知道在某些语言中(无法说出任何名字),^
用于指数函数,但在 C++ 和 C# 中,^
是按位 XOR 运算符,可以重载,但这不是我想要的超载。我不想超载电源功能或其他任何东西
例如。我知道我可以2^x
用(1 << x)
. 所以,我的第二部分,C# 中有指数运算符还是我必须坚持使用System.Math.Pow(base, exp);
您可以创建一个扩展方法来充当 Math.Pow() 的快捷方式,这实际上是很常见的事情。
也许:
public static double Pow(this double a, double b)
{
return Math.Pow(a, b);
}
那么你可以像这样使用它:
myDouble = myDouble.Pow(3);
当涉及到扩展方法时,您可以使用多种格式。如果你的目标是简洁,我相信你可以想出一些你会满意的东西。
指数运算符的基本方言和 Matlab 使用^
。其他语言(Fortran、Python、F#)使用**
. 不幸的是,C# 没有指数运算符。
尽管可以^
在 C# 中重载 XOR 运算符,但不建议这样做,因为具有不寻常且未记录的含义的运算符会令人困惑。
即便如此,只有当基数和指数操作数中的一个或两个是用户定义的类型时,重载才是可能的。你不能只定义'^'来表示取幂,比如双打。