C# 函数以获取不同类型的输入?

C# 函数以获取不同类型的输入?,c#,types,parameters,C#,Types,Parameters,我在C#中有一个BigInt类,它的函数如下 public BigInt Multiply(BigInt Other) public BigInt Exponentiate(BigInt Other) 等等,BigInt可以用字符串或int来构造,可以有多个构造函数。但是当我想用int(而不是BigInt)调用这些算术函数时 我必须用输入int重新定义相同的乘法函数 public BigInt Multiply(int other) { BigInt Other = new BigInt(ot

我在C#中有一个
BigInt
类,它的函数如下

public BigInt Multiply(BigInt Other)
public BigInt Exponentiate(BigInt Other)
等等,BigInt可以用字符串或int来构造,可以有多个构造函数。但是当我想用int(而不是BigInt)调用这些算术函数时

我必须用输入int重新定义相同的乘法函数

public BigInt Multiply(int other)
{
BigInt Other = new BigInt(other);
//rest of the code same
}
那么我如何在一段代码中处理这个问题呢? 我认为默认参数只允许其中一个(例如,仅允许BigInt,但不允许int,反之亦然)


提前感谢..

创建从
int
BigInt
的隐式转换

public static implicit operator BigInt(int value)
{
    return new BigInt(value);
}
然后您只需要一个重载,它接受一个
BigInt
参数:

BigInt bigInt = ...
BigInt mult = bigInt.Multiply(5);

创建从
int
BigInt
的隐式转换

public static implicit operator BigInt(int value)
{
    return new BigInt(value);
}
然后您只需要一个重载,它接受一个
BigInt
参数:

BigInt bigInt = ...
BigInt mult = bigInt.Multiply(5);

用BigInt重载实现每个int重载怎么样

public BigInt Multiply(int a)
{
    return Multiply(new BigInt(a));
}

用BigInt重载实现每个int重载怎么样

public BigInt Multiply(int a)
{
    return Multiply(new BigInt(a));
}

如果这不是家庭作业,请使用
System.Numerics.biginger
。哇,我不知道这个存在。如果这是一个家庭作业,我可能会:)无论如何,谢谢。@marvin,看来你误解了。L.B.说自己重新实现
biginger
是个坏主意,除非你必须这么做。好的,但我已经重新实现了。所以为什么不完成它:)如果这不是一个家庭作业,使用
System.Numerics.biginger
。哇,我不知道这个存在。如果这是一个家庭作业,我可能会:)无论如何,谢谢。@marvin,看来你误解了。L.B.说自己重新实现
biginger
是个坏主意,除非你必须这么做。好的,但我已经重新实现了。所以为什么不完成它:)似乎是可行的。但每个函数都必须有两个,对吗?它们被称为“过载”吗?如果我只想看一次“public BigInt Multiply”行呢?问得太多了吗?:)似乎可行。但每个函数都必须有两个,对吗?它们被称为“过载”吗?如果我只想看一次“public BigInt Multiply”行呢?问得太多了吗?:)当然NET的
biginger
,以及许多类似的。当然,它们还会重载
*
(乘法)运算符。请注意,
biginger
是一个
struct
,而不是
类。他们选择了即使一个
biginger
可能会占用数百万字节。NET的
biginger
,以及许多类似的。当然,它们还会重载
*
(乘法)运算符。请注意,
biginger
是一个
struct
,而不是
类。他们选择了即使一个
biginger
可能会占用数百万字节。