有人可以解释使用C#4.0编写的以下方法签名有什么问题吗?
public void Test(string arg1 = string.Empty, DateTime arg2 = DateTime.MinValue){}
我理解“”和string.Empty在编译时检查方面的区别,但是如果你不能声明一个合理的值类型为null style comparisson,那么在C#4.0中实现可选参数的方式肯定是不合适的?
答案 0 :(得分:6)
因为DateTime.MinValue
和DateTime.MaxValue
不是编译时常量 - 它们是readonly
字段,它们在运行时由DateTime
的静态构造函数初始化。
查看const
字段(编译时常量)和readonly
字段(不是)之间的区别:What is the difference between const and readonly?
答案 1 :(得分:0)
您可以仅使用文字值,常量值和新对象实例作为参数值。