【问题标题】:How to create a constant for the value of next year如何为明年的值创建一个常量
【发布时间】:2016-10-26 23:35:02
【问题描述】:

我想创建一个常量,它是明年的值。目的是在 switch-case 语句中使用常量。

private const string filterThisYear = "= " + Convert.ToString(DateTime.Now.Year);
private const string filterNextYear = "= " + Convert.ToString(DateTime.Now.Year + 1);

编译器抱怨,“分配给 'filterThisYear' 的表达式必须是常量”,并且在 switch 语句中我得到“需要一个常量值”。

有什么想法吗?

【问题讨论】:

  • 你真的需要编译时间常数吗?如果您想要一个不可更改的值,您可以将其设为 readonly: private static readonly int ThisYear = DateTime.Now.Year

标签: c# date switch-statement constants


【解决方案1】:

“今年”和“明年”是定义上的相对概念。

常量是在编译时设置的值,并且永远不会改变。

“今年”是指撰写本文时的 2016 年。当有人读到这个“明年”时,“今年”就是2017年。

就 switch 语句而言,这是一个众所周知的限制。我猜你试过这样做:

switch (year)
{
    case DateTime.Now.Year:
        //Some code here
}

编译器一定告诉您它需要一个常量,因此您决定尝试创建一个如问题所示的常量,正如您现在所知,由于上述原因,该常量不起作用。

这与开关的编译和执行方式有关,远远超出了问题的范围。可以说,这是不可能的。

改为使用 if 语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多