Почему Convert.ToDateTime (Int64) не реализован?
От: Michael7 Россия  
Дата: 19.01.18 19:34
Оценка:
В общем-то мелочь, но захотелось логику применения узнать, вдруг чего-то не понимаю.
В описании на msdn прямо сказано, что Convert.ToDateTime (Int64) фактически не реализован.

https://msdn.microsoft.com/ru-ru/library/400f25sk(v=vs.110).aspx

При вызове этого метода всегда возникает исключение InvalidCastException.


Неясно почему MS решили ввести этот метод еще в версии 1.1 дотнета, но похоже, что навсегда оставить ошибку преобразования, при том, что есть конструктор DateTime от Int64, и в принципе всегда можно написать, что-то вроде нижеследующего и оно работает.

Int64 a;
....
Console.WriteLine(new DateTime(a).ToLongDateString());


Так делают иногда для делегатов или если подразумевается, что метод будет переписан в унаследованном классе, но тут, смысла не вижу.
Re: Почему Convert.ToDateTime (Int64) не реализован?
От: Sinatr Германия  
Дата: 22.01.18 08:11
Оценка:
M>В общем-то мелочь, но захотелось логику применения узнать, вдруг чего-то не понимаю.

Посмотрите другие оверлоады этого метода. Скажем, для bool, согласитесь, смысла нет в таком преобразовании. А как насчет byte? Тоже пожалуй нет, согласны? Так, а теперь у нас есть int64.. вопрос, почему вдруг это должно стать возможным, такое "преобразование"?

То, что вы вызываете конструктор явно, передавая ему количество тиков, согласитесь, немножечко отличается от преобразования какого-то числа в DateTime.
---
ПроГLамеры объединяйтесь..
Re: Почему Convert.ToDateTime (Int64) не реализован?
От: vmpire Россия  
Дата: 22.01.18 10:04
Оценка:
Здравствуйте, Michael7, Вы писали:

M>В общем-то мелочь, но захотелось логику применения узнать, вдруг чего-то не понимаю.

M>В описании на msdn прямо сказано, что Convert.ToDateTime (Int64) фактически не реализован.
Convert — вообще крайне вредный класс, по крайней мере, большая часть его методов.
Может, в MS это просто осознали и решили не реализовывать в нём то, что не было реализовано раньше, а просто оставить для совместимости?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.