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 <-- 

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

解决方法:

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

public Hello(int x = 0) : this(new BigInteger(x)) {}
public Hello(BigInteger x) 
{
    X = x;
}

如果您想知道,当类型是BigInteger时,x = 0不计为常量,因为将0转换为BigInteger将为involve invoking the implicit conversion operator for int to BigInteger.

上一篇:Java大数源码剖析(一) - BigInteger的底层数据结构


下一篇:java – BigInteger负值