DateTime作为SortedDictionary <K,V>中的键

Kev*_*Kev 5 .net collections

我可以安全地使用DateTime作为一个SortedDictionary<K, V>没有实现自己的关键IComparer吗?

我已经尝试了它并且维护了排序顺序,并且重要的是为了我的目的,该.ContainsKey<T>方法按预期工作.但我只想在将自己投入这条道路之前进行双重检查.

bru*_*nde 9

我工作得很好,因为DateTime工具IComparable<DateTime>.所以你可以依赖Comparer(T).Default.

在内部,DateTime使用滴答来比较2个日期.


Mat*_*caj 7

你不需要新的IComparer.您的默认IComparer将使用您的值对象中的GetHashCode()并与之进行比较/排序.由于DateTime类型正确实现了GetHashCode(),因此默认IComparer将按您的意愿排序(就像您发现的那样).

创建新的比较器更适合您自己编写的复杂集合.我写过一次复杂的比较器.这有点令人兴奋.


dev*_*uff 5

我没有预见到任何问题。在幕后,该值是一个较长的滴答值。

另外,请确保所有值都基于同一时区-我个人使用UTC / GMT进行存储和计算,并且仅在显示时调整为本地时间。