У меня есть этот код:Длинный к объекту неявные преобразования сломан?
DateTime d = DateTime.Today;
long l = d.ToBinary();
object o = (long)l;
d = new DateTime((long)o);
Когда я выполняю этот код, я получаю ошибку на d = new Date..
(в последней строке). В нем говорится, что аргумент вне диапазона; что он находится вне диапазона максимальных и минимальных тиков. Что кажется вероятным, так как использование отладчика l
- огромное отрицательное число (и я не думал, что тики могут быть отрицательными).
Является ли C# object/long
сломанным или я просто что-то пропустил? Я также попытался установить DateTimeKind
, и это ничего не сделало. .
Кроме того, эта работа ведется на 64 битной машине (хотя это не имеет значения из-за .NET)
Я думал, что ToBinary получил тики .. Я не знал, что существует различие .. тьфу ...(идет и исправляет довольно много строк кода) – Earlz
Нет, ToBinary включает свойство DateTime.Kind (два бита) и свойство DateTime.Ticks (шестьдесят два бита). – jason
@earlz: Значение, возвращаемое 'ToBinary', также включает' DateTimeKind' в высоких бит. (Отсюда огромное отрицательное число, которое вы упомянули в вопросе.) – LukeH