27

我想在 .net 中创建一个日期时间常量,但收到错误消息

const DateTime dt = Convert.ToDateTime("02/02/2014");

'System.DateTime' 不能声明为 const。

4

2 回答 2

31

即使您可以将a 声明DateTime为 const (您不能,正如其他答案所表明的那样),您也必须使用编译时常量作为值 - 而且DateTime.Now肯定不是编译时常量。

这是有效的:

static readonly DateTime dt = DateTime.Now();

请注意,这将是“无论何时运行该类型的类型初始化程序”。这很少是一个特别有用的值,除非你确保它在启动时被初始化,假设这是你想要测量的......

于 2013-02-25T09:11:55.003 回答
21

DateTime 不是 C# 语言中的本机类型 - 它是来自 .Net 库的结构。

在 C# 中,您只能从本地语言类型创建 const,并且只能使用可以在编译时计算的值来初始化它们。DateTime.Now 无法在编译时计算。

(您可以与 const 一起使用的唯一引用类型是字符串,这是因为字符串是经过特殊处理的。)

请参阅http://msdn.microsoft.com/en-gb/library/e6w8fe1b%28v=vs.71%29.aspx

于 2013-02-25T09:09:58.760 回答