为什么我不能将DateTime.MinValue和int.MinValue用作C#4.0中的可选值?

时间:2010-11-03 18:03:44

标签: c#-4.0 optional-parameters

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

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

我理解“”和string.Empty在编译时检查方面的区别,但是如果你不能声明一个合理的值类型为null style comparisson,那么在C#4.0中实现可选参数的方式肯定是不合适的?

2 个答案:

答案 0 :(得分:6)

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

查看const字段(编译时常量)和readonly字段(不是)之间的区别:What is the difference between const and readonly?

答案 1 :(得分:0)

您可以仅使用文字值,常量值和新对象实例作为参数值。