我有一组对象。我想以这样的方式对它们进行排序,以确保未来的一组(可能是不同的)对象保证与我当前的排序一致。在其他语言中,我会通过使用地址来完成此操作。但在C#中,地址被认为是不安全的。我宁愿避免这样做。那么我怎样才能实现目标呢?
答案 0 :(得分:1)
我假设您的对象中没有可以排序的识别信息。给每个对象一个人为的这样的属性。
class MyClass { public Guid SortKey = Guid.NewGuid(); }
然后按那个键排序。如果无法扩展要排序的对象,请保持外部存储的排序键:
Dictionary<object, Guid> sortKeyByObject;
您也可以使用递增整数计数器代替Guids。请务必以线程安全的方式使用它并注意包装问题(因此请使用long
)。
请勿使用object.GetHashCode
,因为它不一定是唯一的。
答案 1 :(得分:0)
使用Object.GetHashCode()
排序。
GetHasCode()
将(除非你自己重写它,非常糟糕)在同一个执行中返回一个一致的值,我认为这是你想要的,因为你提到了内存被解决...