默认参数值必须是编译时常数错误消息
本文关键字:常数 错误 消息 编译 参数 默认 | 更新日期: 2023-09-27 17:57:41
我似乎收到了一条错误消息,就像我在标题中提到的那样。"‘随机化器’的默认参数值必须是编译时常数错误消息。"
对于此代码:
public Random Randomizer {
get;
private set;
}
public ShuffleDeck( Random randomizer = new Random(DateTime.Now.Millisecond)) {
this.Randomizer = randomizer;
}
我不明白为什么?有人知道线索吗?
我不明白为什么?
这就是该语言的文档所说的。
默认值必须是以下类型的表达式之一:
- 一个常量表达式
- 形式为new ValType()的表达式,其中ValType是值类型,例如枚举或结构
- 默认形式(ValType)的表达式,其中ValType是一种值类型
您可以执行(但请参阅Servy的评论):
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;
}