我似乎收到了一个错误消息,就像我在标题中提到的那样。 “'randomizer'的默认参数值必须是编译时常量错误消息。”
对于此代码:
public Random Randomizer {
get;
private set;
}
public ShuffleDeck( Random randomizer = new Random(DateTime.Now.Millisecond)) {
this.Randomizer = randomizer;
}
我无法弄清楚为什么?有人有任何线索吗?
答案 0 :(得分:4)
我无法找出原因?
那就是语言的documentation所说的。
默认值必须是以下类型的表达式之一:
- 一个常量表达式;
- 新形式ValType()的表达式,其中ValType是值类型,例如枚举或结构;
- 表单default(ValType)的表达式,其中ValType是值类型。
您可以(但请参阅Servy's comment):
public ShuffleDeck(Random randomizer = null) {
if (randomizer == null)
this.Randomizer = new Random(DateTime.Now.Millisecond);
else
this.Randomizer = randomizer;
//or this.Randomizer = randomizer ?? new Random());
}
或者你可以拥有像:
这样的重载构造函数public ShuffleDeck()
: this(new Random(DateTime.Now.Millisecond))
{
}
public ShuffleDeck(Random randomizer)
{
this.Randomizer = randomizer;
}