我正在尝试编写一个扩展方法,将函数HasFactor
添加到C#中的int
类中。这非常有效,如下所示:
static class ExtendInt
{
public static bool HasFactor(this int source, int factor)
{
return (source % factor == 0);
}
}
class Program
{
static void Main()
{
int i = 50;
int f = 2;
bool b = i.HasFactor(f);
Console.WriteLine("Is {0} a factor of {1}? {2}",f,i,b);
Console.ReadLine();
}
}
这段代码很好用,因为上面的
Main()
方法中变量i
被声明为int
。但是,如果将i
声明为Int16
或Int64
,除非将其显式转换为int
或Int32
,否则扩展方法不会出现。现在我想将相同的
HasFactor
方法应用于Int16
和Int64
。但是,我不想为每种类型的int
编写单独的扩展方法。我可以为Int64
编写一个单一的方法,然后将所有内容显式转换为Int64
或long
,以便扩展方法出现。理想情况下,我希望相同的扩展方法适用于这三种类型,而不必复制和粘贴大量代码。
在C#中是否有可能实现这一点?如果不行,是否有推荐的最佳做法?
Int64
创建一个扩展方法。这应该适用于我正在做的事情。 - Ben McCormack