2011-05-13 133 views
0

由于某些原因,我无法在C#中的Switch语句中比较两个日期参数。 相同的比较在ifelse if陈述中完美无缺,但在switch中没有。在C#switch语句中比较日期参数

实施例:

​​
+0

您想查看交换机的语法,因为你不使用它类似的东西它是专为做DateTime值switch语句。大小写以冒号结尾,而不是分号,并且您在switch()中使用了ToString(),因此这些个案必须全部是字符串,也就是说,“5/13/2011 6:25 PM”就是Today.ToString()会做的事情。 – 2011-05-14 00:25:17

回答

2

case语句必须是一个编译时间常数(C# spec and example):

每个案例标签指定的恒定值。

不幸的是,您将无法使用switch来比较DateTime。这是丑陋的,但在这里使用if是更好的选择。

+0

你的语句表明'case default(DateTime):'应该工作,因为'default(DateTime)'是一个编译时常量,但它不起作用。 – svick 2011-05-14 00:04:37

+0

谢谢。会选择这个答案。 – lakdsla 2011-05-14 00:06:11

+0

我不认为默认(DateTime)是编译时间常量。 AFAIK它实现为DateTime.MinValue,这是一个静态常量。 – YetAnotherUser 2011-05-14 00:23:38

0

8.7节的C#4规范的0.2规定在其上有可能切换类型必须是:

sbytebyteshortushortintuintlongulongboolcharstring,或枚举类型,或[...]对应于这些类型的

或一种类型的隐式转换为其中的一个中的一个空类型类型,除了bool

1

,你可以将它们转换为长(dateTime.Ticks)