CodeSOD:负面日
.NET 中 TimeSpan 结构体的源代码包含一条注释,解释其功能。TimeSpan 表示一个可正可负的持续时间。内部存储为毫秒数。这种表示方式对于小时和天等单位效果良好,但在处理更长周期时会出现精度问题。例如,月份的天数可能在 28 至 31 天之间变化;同样,一年可能有 365 或 366 天,而一个十年可能包含一至三个闰年。正是这些不一致性导致 TimeSpan 结构体不提供处理年或月份的方法。文中提到的"364 天”作为一年的长度是一个小错误,作者称之为“手指误触导致的拼写错误”,并不影响代码的行为。该注释在代码中已存在十二年且未作任何修改。TimeSpan 类本身本质上只是一个毫秒包装器,也未曾发生变化。更复杂的日期计算,如添加月份或年份,由其他日期时间对象处理。虽然这并非重大问题,但该注释及其历史沿革值得注意。TimeSpan 类还揭示了已弃用的构造函数以及对旧版 .NET 版本(包括 Silverlight)的编译时支持。Silverlight 是一项已废弃的技术,凸显了该类的长期存在。