如何在C#中使DateTime对象不可变(声明为const)?

jor*_*dan 9 .net c# datetime const immutability

我尝试了以下不起作用的代码

private const DateTime newDateTime = new DateTime(1,1,1,1,1,1);
Run Code Online (Sandbox Code Playgroud)

编译器声明"DateTime变量不能声明为const".

我想知道如何使这个对象不可变,因为我不想在任何地方错误地改变它.此值将用作检查值以比较其他DateTime对象.

谢谢你的帮助.

Kir*_*huk 14

将其设为静态并使用readonly关键字标记,即:

private static readonly DateTime newDateTime = new DateTime(1,1,1,1,1,1);
Run Code Online (Sandbox Code Playgroud)

  • @xbonez`const`变量是隐含的`static`,所以如果他想要它是`const`,它显然不是一个特定于实例的变量.就真实含义而言,它意味着变量存储一次,而不是每个实例.如果它总是相同的那就是节省内存. (6认同)
  • `readonly`是不言自明的,但为什么`静态`? (3认同)
  • @Servy:啊,这很有道理.谢谢. (2认同)
  • @ jordan.peoples - 封装是为了在运行时保护对象免受外部影响,你不能保护代码不被编辑,例如没有什么可以阻止他们删除`readonly`.如果担心,我建议单元测试是确保课程在未来按预期方式工作的最佳方式. (2认同)