Странная реализация TimeSpan FromMilliseconds?

Недавно я столкнулся с некоторым странным поведением в реализации временного интервала .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 бесполезно в данной реализации)?

27
задан DEHAAS 27 March 2011 в 16:19
поделиться