2012-05-28 1 views
0

Existe-t-il un moyen de surcharger les exposants en C#? Je sais dans certaines langues (je ne peux en nommer aucune), ^ est utilisé pour les fonctions exponentielles, mais en C++ et C#, ^ est l'opérateur XOR bit à bit, qui can be overloaded, mais ce n'est pas ce que je veux surcharge. Je ne veux pas surcharger la fonction d'alimentation ou autreExposants surchargés C# et opérateur d'exposant

Par exemple. Je sais que je peux faire 2^x avec (1 << x). Donc, ma deuxième partie, est-ce qu'il y a un opérateur exponentiel en C# ou dois-je rester avec System.Math.Pow(base, exp);

+0

On dirait que vous avez répondu à votre propre question. –

+0

@NeilN j'ai dit "exposants de surcharge", pas "surcharger XOR" –

+0

Droit, vous voulez dire l'opérateur ^. Non exposants eux-mêmes, ce qui serait quelque chose comme Math.Exp –

Répondre

4

Vous pouvez créer une méthode d'extension pour agir comme un raccourci vers Math.Pow(), c'est en fait une chose très courante à faire.

peut-être:

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

Alors vous pouvez l'utiliser comme ceci:

myDouble = myDouble.Pow(3); 

Il y a différents formats, vous pouvez jouer avec en ce qui concerne les méthodes d'extension. Si votre objectif est la brièveté, je suis sûr que vous pouvez trouver quelque chose que vous serez heureux.

1

Les dialectes de base et Matlab utilisent ^ pour l'opérateur d'exposant. Les autres langues (Fortran, Python, F #) utilisent **. C# n'a malheureusement pas d'opérateur exposant.

Bien qu'il soit possible de surcharger l'opérateur XOR ^ en C#, il n'est pas recommandé car il serait déroutant d'avoir un opérateur avec une signification inhabituelle et non documentée. Même dans ce cas, la surcharge n'est possible que si l'un des opérandes de base et d'exposant ou les deux sont de type défini par l'utilisateur. Vous ne pouvez pas simplement définir '^' pour dire exponentiation, disons double.

Questions connexes