Quiero escribir una serie de métodos de extensión para simplificar las operaciones matemáticas. Por ejemplo:¿Cómo escribo correctamente los métodos de extensión matemática para int, double, float, etc.?
En lugar de
Math.Pow(2, 5)
me gustaría ser capaz de escribir
2.Power(5)
que es (en mi mente) más clara.
El problema es: ¿cómo trato con los diferentes tipos numéricos al escribir los métodos de extensión? ¿Es necesario escribir un método de extensión para cada tipo:
public static double Power(this double number, double power) {
return Math.Pow(number, power);
}
public static double Power(this int number, double power) {
return Math.Pow(number, power);
}
public static double Power(this float number, double power) {
return Math.Pow(number, power);
}
O hay un truco para permitir que una sola obra Método de extensión para cualquier tipo numérico?
Gracias!
otro voto para INumeric – Robert
+1 Sí, estoy sorprendido de que no fue parte del marco, para empezar. – Pwninstein
** Advertencia ** al usar tales métodos de extensión: ** '-10.Power (2) == -100' **. El signo menos se aplica al resultado de '10.Power (2)'. – HugoRune