Ben*_*ack 8 .net c# extension-methods types
我正在尝试编写一个扩展方法,将函数添加HasFactor到intC#中的类中.这非常有效,如下所示:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
因为变量这个伟大的工程i在Main()以上方法声明为int.但是,如果i声明为an Int16或an Int64,则扩展方法不会显示,除非它显式转换为int或Int32.
我现在想同样的申请HasFactor方法Int16和Int64.但是,我宁愿不为每种类型的内容编写单独的扩展方法int.我可以为一个方法编写一个方法Int64,然后将所有内容显式地转换为Int64或者long按顺序显示扩展方法.
理想情况下,我更喜欢将相同的扩展方法应用于所有三种类型,而无需复制和粘贴大量代码.
这在C#中甚至可能吗? 如果没有,是否有针对此类情况的推荐最佳做法?
不,这在C#中是不可能的.您必须为每种类型创建一个扩展方法.最接近的是具有在接口上操作的扩展方法,但在这种情况下,没有INumeric接口或由各种数字类型实现的任何类似的接口.
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |