我需要一个具有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.