如何将默认参数值设置为BigInteger类型?

pro*_*eek 3 c# biginteger

我需要一个具有BigInteger类型的构造函数的类.我想用这个代码将默认值设置为0,但是我遇到了编译错误.

public class Hello
{
    BigInteger X {get; set;}
    public Hello(BigInteger x = 0)
    {
        X = x;
    }
}

public class MyClass
{
    public static void RunSnippet()
    {
        var h = new Hello(); // Error <-- 
Run Code Online (Sandbox Code Playgroud)

怎么了?有没有办法将默认值设置为BigInteger参数?

dri*_*iis 6

默认参数仅适用于编译时常量(以及参数可以是default(ValType)或的值类型new ValType()),因此不适用于BigInteger.对于你的情况,你也许可以这样做; 提供一个带有int的构造函数重载,并使其具有一个默认参数:

public Hello(int x = 0) : this(new BigInteger(x)) {}
public Hello(BigInteger x) 
{
    X = x;
}
Run Code Online (Sandbox Code Playgroud)

如果您想知道,x = 0当类型为a时BigInteger,不计为常量,因为将0转换为BigInteger涉及调用int到BigInteger的隐式转换运算符.