0

C#で指数をオーバーロードする方法はありますか?一部の言語では(頭のてっぺんから名前を付けることはできません)、^指数関数に使用されていることは知っていますが、C ++およびC#では^、ビット単位のXOR演算子であり、オーバーロードできますが、これは私が望んでいることではありません過負荷。べき関数などを過負荷にしたくない

例えば。私はでできることを知ってい2^xます(1 << x)。それで、私の2番目の部分は、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演算子をオーバーロードすることは可能ですが^、異常で文書化されていない意味を持つ演算子を使用すると混乱するため、お勧めしません。

それでも、オーバーロードは、ベースオペランドと指数オペランドのいずれかまたは両方がユーザー定義型である場合にのみ可能です。たとえば、doubleのべき乗を意味するように「^」を定義することはできません。

于 2012-05-28T17:18:53.623 に答える