通用不变排序

时间:2014-02-01 15:56:50

标签: c# sorting

我有一组对象。我想以这样的方式对它们进行排序,以确保未来的一组(可能是不同的)对象保证与我当前的排序一致。在其他语言中,我会通过使用地址来完成此操作。但在C#中,地址被认为是不安全的。我宁愿避免这样做。那么我怎样才能实现目标呢?

2 个答案:

答案 0 :(得分:1)

我假设您的对象中没有可以排序的识别信息。给每个对象一个人为的这样的属性。

class MyClass { public Guid SortKey = Guid.NewGuid(); }

然后按那个键排序。如果无法扩展要排序的对象,请保持外部存储的排序键:

Dictionary<object, Guid> sortKeyByObject;

您也可以使用递增整数计数器代替Guids。请务必以线程安全的方式使用它并注意包装问题(因此请使用long)。

请勿使用object.GetHashCode,因为它不一定是唯一的。

答案 1 :(得分:0)

使用Object.GetHashCode()排序。

GetHasCode()将(除非你自己重写它,非常糟糕)在同一个执行中返回一个一致的值,我认为这是你想要的,因为你提到了内存被解决...