我有一个他们有id的guids对象列表。我想使用此对象列表中的ID来创建一个我可以使用的guid,确保列表没有更改。如果删除/添加了一个对象,那么guid会有所不同。想到的是使用哈希。也许我应该使用哈希,但我想知道这是否可能比生成哈希更快?
编辑: 我从存储过程中获取此列表。然后将对象列表存储到内存缓存中。每个用户将根据此生成的值在cookie中验证其本地值,以确保列表仍然相同。
答案 0 :(得分:2)
您可以编写自己的类来访问列表或哈希集或任何其他支持此类的集合:
class GuidList // You can implement IReadOnlyList
{
public bool Dirty { get; private set;}
// Omit if implementing `IReadOnlyList`
public Guid[] Guids { get { return guidCollection.ToArray() }
public void Add(Guid guid) // Do similarly for remove
{
Dirty = true;
// implement logic
}
}
这是一种信息隐藏形式。
答案 1 :(得分:1)
当您需要知道对象是否与以前完全相同时,您不能单独依赖哈希 - 对象的哈希允许您明确地告诉对象是不同的,但它并不保证对象是相同的。
通常有几种方法可以解决这个问题:
注意:根据您的要求,您可能需要加密/签署Cookie值(可能使用salt)以防止客户端代码篡改您的Cookie值。