如何为JObject创建唯一的哈希码?我正在尝试为JObjects实现缓存。我很惊讶地看到他们没有覆盖GetHashCode方法,所以我不能将它用作唯一键。由于我的json非常大,我不想使用JObject.ToString().GetHashCode作为解决方案。我确实看到他们有一个名为GetDeepHashCode的内部方法,但实现是基于其他受保护的属性,因此,我无法“复制”代码并从中创建扩展方法。我也不想使用反射并调用内部GetDeepHashCode方法。我正在寻找一种为JObject创建唯一缓存键的方法,我不希望这种方法在性能方面更加昂贵。您可以使用JTokenEqualityComparer.GetHashCode(JTokentoken)来实现这一点。它提供对您看到的GetDeepHashCode()方法的访问。varobj=JToken.Parse(jsonString);varcomparer=newJTokenEqualityComparer();varhashCode=comparer.GetHashCode(obj);请注意,JTokenEqualityComparer.Equals(JTokenx,JTokeny)调用JToken.DeepEquals()(来源),因此在构造LINQ-to-JSON对象和唯一性的哈希表或字典时,此比较器适合用作IEqualityComparer。值是预期的。以上就是C#学习教程:如何为JObject创建唯一的哈希码?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
