比较C#switch语句中的日期参数

时间:2011-05-13 23:56:28

标签: c# datetime switch-statement

由于某些原因,我无法在C#中的Switch语句中比较两个日期参数。 相同的比较在ifelse if语句中完全正常,但在switch中则不然。

示例:

switch (DateTime.Today.ToString())
{
    case DateTime.Today.AddDays(-10) <= DateTime.Today;
}

4 个答案:

答案 0 :(得分:2)

case语句必须是编译时常量(C# spec and example):

  

每个案例标签都指定一个常量值。

很遗憾,您无法使用switch来比较DateTime。这是更丑陋的,但使用if是更好的选择。

答案 1 :(得分:1)

您写错了开关案例,请在此处查看更多信息http://msdn.microsoft.com/en-us/library/06tc147t(v=VS.100).aspx

另请注意,switch case适用于常量,所以我认为DateTime不能用它,你会得到编译错误

答案 2 :(得分:1)

你可以通过将它们转换为long(dateTime.Ticks)

来对DateTime值进行切换语句

答案 3 :(得分:0)

C#4规范的第8.7.2节规定了可以切换的类型必须是:

  

sbytebyteshortushortintuintlongulongboolcharstring或枚举类型,或[...]与这些类型之一对应的可空类型

或可隐式转换为其中一种类型的类型,但bool除外。