如果我有一个计算两个整数最大公约数的方法:
public static int GCD(int a, int b)
{
return b == 0 ? a : GCD(b, a % b);
}
最好的方法是将其附加到System.Math类中?
以下是我想出的三种方法:
public static int GCD(this int a, int b)
{
return b == 0 ? a : b.GCD(a % b);
}
// Lame...
var gcd = a.GCD(b);
并且:
public static class RationalMath
{
public static int GCD(int a, int b)
{
return b == 0 ? a : GCD(b, a % b);
}
}
// Lame...
var gcd = RationalMath.GCD(a, b);
并且:
public static int GCD(this Type math, int a, int b)
{
return b == 0 ? a : typeof(Math).GCD(b, a % b);
}
// Neat?
var gcd = typeof(Math).GCD(a, b);
期望的语法是 Math.GCD
,因为这是所有数学函数的标准。
有什么建议吗?我应该怎么做才能得到所需的语法?
var gcd = typeof(string).GCD(a, b)
- 它只需要一个Type
的实例... 我认为你想做的事情实际上是不可能的。 - Dean Harding