我对头衔没有好处。但请耐心等待:我知道为什么引用类型本身不能被声明为const - 它们必须在编译时完全可评估。因此,引用类型常量的唯一可能值是字符串和空引用。
因此const DateTime x = some date
无效是有道理的。但是遵循这个逻辑,我不应该将DateTime d1 = default(DateTime)
作为可选参数传递,就像我不能声明const DateTime d1 = default(DateTime)
一样,因为可选参数必须是编译时常量?这一直是我有这种态度的事情。只是它的方式"关于,但我现在很好奇。
编译时常量是编译时常量吗?如,常数是常数?
当然,我的IDE(Visual Studio)也可能只是出错,因为DateTime不允许作为const
而且它会被编译为default(DateTime)
。还是null
参考?
答案 0 :(得分:1)
查看optional parameters上的msdn文章。 当数据类型是值类型(enum,struct)时,您可以使用空构造函数启动可选参数:
static void Foo(string s, DateTime opt = new DateTime())
或使用默认关键字。参考类型不适用。