默认参数值必须是编译时常量错误消息

时间:2014-04-09 17:31:41

标签: c# webforms compiler-errors

我似乎收到了一个错误消息,就像我在标题中提到的那样。 “'randomizer'的默认参数值必须是编译时常量错误消息。”

对于此代码:

    public Random Randomizer {
            get;
            private set;
        }
        public ShuffleDeck( Random randomizer = new Random(DateTime.Now.Millisecond)) {
            this.Randomizer = randomizer;
        }

我无法弄清楚为什么?有人有任何线索吗?

1 个答案:

答案 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;
}