2012-05-28 66 views
0

有沒有辦法在C#中重載指數?我知道在某些語言中(不能命名我的頭頂上的任何東西),^用於指數函數,但在C++和C#中,^是按位異或運算符,其中can be overloaded,但這不是我想要的超載。我不想過載電源功能或其他任何東西重載指數C#和指數運算符

例如。我知道我可以用(1 << x)2^x。那麼,我的第二部分,是否存在C#中的指數運算符,還是我必須堅持使用System.Math.Pow(base, exp);

+0

聽起來像你回答自己的問題。 –

+0

@NeilN我說「超載指數」,而不是「超載異或」 –

+0

對,你的意思是操作符^。不是指數本身,這將是像Math.Exp –

回答

4

你可以創建一個擴展方法來充當Math.Pow()的快捷方式,這實際上是一個普通的事情。

也許是:

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

,那麼你可以使用它像這樣:

myDouble = myDouble.Pow(3); 

有各種格式,你可以玩,當談到擴展方法用。如果你的目標是簡潔的,我相信你可以想出你會滿意的東西。

1

基本方言和Matlab使用^作爲指數運算符。其他語言(Fortran,Python,F#)使用**。不幸的是,C#沒有指數運算符。

雖然有可能過載C#中的異或操作符^,但不建議這樣做,因爲如果操作符具有不同尋常的意義並且沒有文檔含義,將不會引起混淆。

即便如此,只有在基本操作數和指數操作數中的任何一個或兩者都是用戶定義類型時纔可能發生重載。你不能只是定義'^'來表示例如雙倍的指數。