C# 函数以获取不同类型的输入?
我在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
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
可能会占用数百万字节。