2011-05-13 38 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)