【发布时间】:2018-12-04 06:52:36
【问题描述】:
所以,我有几个object 实例,我想将它们按一致的顺序排列。顺序是什么并不重要,只要我可以在任何一对实例上重复它并获得相同的顺序即可。 (假设唯一的实例。)
有什么方法可以在不依赖实例值的情况下做到这一点? (我知道RuntimeHelpers.GetHashCode 可以为每个实例获得一致的散列,而不必担心它的值,但不保证散列是唯一的。)
基本上,我要求实现IComparer<object>。
【问题讨论】:
-
有什么原因吗?拥有
object实例已经够奇怪了。 -
简单的解决方案是为每个实例生成并存储您自己的值,尽管如果您要跟踪大量对象,这可能会消耗大量内存。
-
从技术上讲,我将使用它作为更明确的参考,但由于我正在寻找的内容也应该适用于对象,所以我陈述了不太明确的定义。
-
如果您需要为您控制其定义的对象的解决方案,您可以将一个静态计数器放入类型中,并让构造函数执行互锁递增并获取最新的计数器并将其存储在对象中.现在可以按照创建对象的顺序对对象实例进行排序。 (当然,计数器需要有足够大的范围以使其永远不会溢出。)
-
我想答案是“不值得努力”。我首先问的唯一原因是因为更传统的排序涉及一些我希望避免的额外延迟。