Недавно я столкнулся с некоторым странным поведением в реализации временного интервала .net.
TimeSpan test = TimeSpan.FromMilliseconds(0.5);
double ms = test.TotalMilliseconds; // Returns 0
FromMilliseconds принимает двойное значение в качестве параметра. Однако, кажется, что значение округлено изнутри.
Если я создаю новый временной интервал с 5000 тактов (0,5 мс), значение TotalMilliseconds будет правильным.
Если посмотреть на реализацию TimeSpan в отражателе, можно увидеть, что на самом деле это ввод приведено к длинному.
Почему Microsoft разработала метод FromMilliseconds так, чтобы он принимал параметр типа double a вместо long (поскольку значение типа double бесполезно в данной реализации)?