gpt4 book ai didi

c# - 有没有办法编写适用于多种类型的扩展方法?

转载 作者:太空狗 更新时间:2023-10-29 19:40:13 25 4
gpt4 key购买 nike

我正在尝试编写一个扩展方法,将函数 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 被声明为 Int16Int64,扩展方法不会显示,除非它被显式转换为 intInt32

我现在想将相同的 HasFactor 方法应用于 Int16Int64。但是,我宁愿不为每种类型的 int 编写单独的扩展方法。为了扩展方法出现。

理想情况下,我希望将相同的扩展方法应用于所有三种类型,而无需复制和粘贴大量代码。

这在 C# 中甚至可能吗?如果不能,是否有针对此类情况的推荐最佳实践?

最佳答案

不,这在 C# 中是不可能的。您必须为每种类型创建一个扩展方法。最接近的是有一个在接口(interface)上运行的扩展方法,但在这种情况下,没有 INumeric 接口(interface)或由各种数字类型实现的任何类似接口(interface)。

关于c# - 有没有办法编写适用于多种类型的扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1990051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com