Сравнение параметров даты в C # switch switch - PullRequest
0 голосов
/ 14 мая 2011

По какой-то причине я не могу сравнить два параметра даты в операторе Switch в C #.То же сравнение прекрасно работает в операторах if и else if, но не в switch.

Пример:

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

Ответы [ 4 ]

2 голосов
/ 14 мая 2011

A case оператор должен быть константой времени компиляции ( C # spec и пример ):

Каждая метка регистра указывает постоянное значение.

К сожалению, вы не сможете использовать switch для сравнения DateTime. Это ужаснее, но лучше использовать if.

1 голос
/ 12 июля 2011

Вы можете переключать операторы в значениях DateTime, преобразовывая их в long (dateTime.Ticks)

1 голос
/ 14 мая 2011

Вы написали неверный регистр переключателя, проверьте дополнительную информацию здесь http://msdn.microsoft.com/en-us/library/06tc147t(v=VS.100).aspx

Обратите внимание, что регистры переключателей работают на константах, поэтому я думаю, DateTime не будет работать с ним, вы получите ошибку компиляции

0 голосов
/ 14 мая 2011

Раздел 8.7.2 спецификации C # 4 гласит, что тип, на который можно переключаться, должен быть:

sbyte, byte, short, ushort, int, uint, long, ulong, bool, char, string или перечисление -тип, или […] обнуляемый тип, соответствующий одному из этих типов

или тип, который неявно преобразуется в один из этих типов, за исключением bool.

...