我試圖編寫一個擴展方法,將函數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
編寫單獨的擴展方法。 I 可能會爲Int64
編寫單一方法,然後將所有內容明確地轉換爲Int64
或long
以使擴展方法出現。
理想情況下,我寧願將相同的擴展方法應用於所有三種類型,而無需複製和粘貼大量代碼。
這甚至可能在C#中嗎?如果不是,這種情況有沒有推薦的最佳做法?
基於Eilon和Marc Gravell的輸入,我想我會爲'Int64'類型創建一個擴展方法。這應該適用於我正在做的事情。 – 2010-01-02 00:26:18