代码之家  ›  专栏  ›  技术社区  ›  Brian Scott

为什么我不能在C 4.0中使用datetime.minvalue和in t.minvalue作为可选值?

  •  1
  • Brian Scott  · 技术社区  · 14 年前

    有人能解释一下用C 4.0编写的以下方法签名有什么问题吗?

    public void Test(string arg1 = string.Empty, DateTime arg2 = DateTime.MinValue){}
    

    我了解“”和string.empty在编译时检查方面的区别,但如果不能声明合理的值类型空样式比较,那么在C 4.0中实现可选参数的方式肯定是不够的?

    2 回复  |  直到 14 年前
        1
  •  6
  •   Community Erin Dees    7 年前

    因为 DateTime.MinValue DateTime.MaxValue 不是编译时常量——它们是 readonly 在运行时由初始化的字段 DateTime 的静态构造函数。

    看看两者的区别 const 字段(编译时常量)和 只读 字段(不是): What is the difference between const and readonly?

        2
  •  0
  •   pyCoder    14 年前

    只能将文字值、常量值和新对象实例用作参数值。