为什么DateTime const的声明会给出编译器错误而不是可选参数?

时间:2016-10-28 09:16:14

标签: c# datetime compilation constants optional-parameters

我对头衔没有好处。但请耐心等待:我知道为什么引用类型本身不能被声明为const - 它们必须在编译时完全可评估。因此,引用类型常量的唯一可能值是字符串和空引用。

因此const DateTime x = some date无效是有道理的。但是遵循这个逻辑,我不应该将DateTime d1 = default(DateTime)作为可选参数传递,就像我不能声明const DateTime d1 = default(DateTime)一样,因为可选参数必须是编译时常量?这一直是我有这种态度的事情。只是它的方式"关于,但我现在很好奇。

编译时常量是编译时常量吗?如,常数是常数?

当然,我的IDE(Visual Studio)也可能只是出错,因为DateTime不允许作为const而且它会被编译为default(DateTime)。还是null参考?

1 个答案:

答案 0 :(得分:1)

查看optional parameters上的msdn文章。 当数据类型是值类型(enum,struct)时,您可以使用空构造函数启动可选参数:

static void Foo(string s, DateTime opt = new DateTime())

或使用默认关键字。参考类型不适用。