【问题标题】:GetHashCode implementation using tuples for derived classGetHashCode 使用派生类的元组实现
【发布时间】:2021-10-05 20:00:00
【问题描述】:

我喜欢使用元组来实现 GetHashCode,如 https://intellitect.com/overidingobjectusingtuple/ 所述。但是,这似乎不适用于派生类。例如:

class Base
{
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }

    public override int GetHashCode() => (Prop1, Prop2).GetHashCode();
}

class Derived : Base
{
    public int Prop3 { get; set; }
    public int Prop4 { get; set; }

    public override int GetHashCode() => (Prop3, Prop4, ???).GetHashCode();
}

目前还不清楚我将如何使用元组实现 Derived GetHashCode。有什么建议么?我们目前正在这样做,但我很想摆脱未经检查的哈希常量:

public override int GetHashCode()
{
    unchecked
    {
        return (base.GetHashCode() * HashCodeConstant) ^ (Prop3, Prop4).GetHashCode();
    }
}

【问题讨论】:

    标签: c# tuples gethashcode


    【解决方案1】:

    https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0070

    public override int GetHashCode()
    {
        return System.HashCode.Combine(base.GetHashCode(), Prop3, Prop4);
    }
    

    【讨论】:

    • 漂亮,不知道有这个,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多