【问题标题】:How do I construct local constants from values returned during runtime?如何从运行时返回的值构造局部常量?
【发布时间】:2010-12-22 11:42:33
【问题描述】:

我希望“文件名”保持不变:

string filename = "WR" + DateTime.Now.ToString("M_dd_yyyy") + ".xls";

我还想将文件名保留为本地而不是字段。(我知道 readonly 可以这样解决问题)

【问题讨论】:

  • DateTime.Now 击败了 const...
  • 是的,我知道。它的行为不应该像 c++ 中的 const 吗?
  • 那么,如果我理解正确的话,你想让一个方法局部变量保持不变(即不可触碰)?你不能……
  • 类似的适用于为什么不能在属性中使用 DateTime。
  • 所以我不能让它“不可修改”?或者有什么解决方法?

标签: c# constants readonly


【解决方案1】:

您可以使用readonly 变量。它可以在声明期间初始化并在构造函数中更改,但不能在其他任何地方进行。而且,它只适用于字段,不适用于局部变量。

private readonly string filename = "WR" + DateTime.Now.ToString("M_dd_yyyy") + ".xls";

至于为什么不能这样使用const——来自MSDN

常量表达式是可以在编译时完全计算的表达式。

当然DateTime.Now 不可能。

【讨论】:

  • 其实我想要一个本地的。我知道 readonly 只能应用于字段而不是本地人。反正。谢谢。
猜你喜欢
  • 2023-04-04
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多