我可以安全地使用DateTime
作为一个SortedDictionary
没有实现自己的关键IComparer
吗?
我已经尝试了它并且维护了排序顺序,并且重要的是为了我的目的,该.ContainsKey
方法按预期工作.但我只想在将自己投入这条道路之前进行双重检查.
我工作得很好,因为DateTime
工具IComparable
.所以你可以依赖Comparer(T).Default.
在内部,DateTime
使用滴答来比较2个日期.
你不需要新的IComparer.您的默认IComparer将使用您的值对象中的GetHashCode()并与之进行比较/排序.由于DateTime类型正确实现了GetHashCode(),因此默认IComparer将按您的意愿排序(就像您发现的那样).
创建新的比较器更适合您自己编写的复杂集合.我写过一次复杂的比较器.这有点令人兴奋.
我没有预见到任何问题。在幕后,该值是一个较长的滴答值。
另外,请确保所有值都基于同一时区-我个人使用UTC / GMT进行存储和计算,并且仅在显示时调整为本地时间。