.net HttpRequest.GetHashCode()实现-发生冲突的频率是多少?

更新时间:2024-05-09 下载TXT文档 下载Word文档

我正在尝试找到一种可靠的方式来唯一标识和跟踪ASP.NET网站中的不同HttpRequest。

有人知道关于HttpRequest.GetHashCode()的实现吗?具体来说,碰撞多久发生一次?

我了解HashCode不能保证是唯一的。我想了解的是统计上我期望HashCode多久重复一次。

我想到的系统可以正常处理HashCode冲突,但是我想确保它们至少与1000个左右中的1个唯一。 短码网-DuanMa.NET

  • 发生碰撞的可能性完全取决于数据,因此除非您有一组固定的输入在所有运行中都不变,否则没人能真正告诉您发生碰撞的频率。如果您使用我建议的解决方案,那么您将不会遇到冲突。
  • 好吧,我想理论上与我的方法可能会发生冲突;)en.wikipedia.org/wiki/…

永远不要保证哈希码的唯一性,因为这不是它们的目的-它们旨在帮助进行相等性测试,作为两个实例之间潜在相等性的早期指标。

换句话说,哈希码可帮助您快速排除两个绝对不相等的实例。

也许最好的方法是:

class TrackableHttpRequest : IEquatable<TrackableHttpRequest>
{
    readonly Guid id = Guid.NewGuid();

    public Guid Id { get { return this.id; } }
    public HttpRequest Request { get; set; }

    public override Int32 GetHashCode()
    {
        return this.Id.GetHashCode();
    }

    public override Boolean Equals(Object obj)
    {
        return this.Equals(obj as TrackableHttpRequest);
    }

    public bool Equals(TrackableHttpRequest other)
    {
        if (other == null)
            return false;

        return this.Id == other.Id;
    }
}

以上就是短码网小编为大家整理的《.net HttpRequest.GetHashCode()实现-发生冲突的频率是多少?》相关内容,希望大家喜欢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若内容造成侵权/违法违规/事实不符,请将联系本站反馈,一经查实,立即处理!

.net HttpRequest.GetHashCode()实现-发生冲突的频率是多少?》文档下载仅供参考学习,下载后请在24小时内删除。

转载注明出处:https://www.duanma.net/article/3541f0fc007.html

回到顶部