为什么不允许在.net中创建日期时间常量?

时间:2013-02-25 09:08:06

标签: c# .net

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

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

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

2 个答案:

答案 0 :(得分:26)

即使你可以DateTime声明为const(你不能像其他答案所指出的那样),你将不得不使用编译时常量< / em>作为值 - 而DateTime.Now肯定不是编译时常量。

这是有效的:

static readonly DateTime dt = DateTime.Now();

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

答案 1 :(得分:17)

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

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

(你可以使用const的唯一引用类型是一个字符串,因为字符串是专门处理的。)

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