You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#派生类中使用元组实现GetHashCode方法?

你只需要把基类的GetHashCode()返回值作为元组的一个元素传入即可,无需手动处理哈希组合逻辑,示例实现如下:

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

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

ValueTuple的内置GetHashCode()方法已经封装了多字段哈希值的组合计算逻辑,内部自动处理了整数溢出场景,因此你不需要额外添加unchecked块,也不需要自定义哈希常量,写法和基类的实现风格完全统一。

注意事项

如果你的类型同时重写了Equals方法,需要保证GetHashCode计算时纳入的字段和Equals中判断相等性的字段完全一致,避免出现两个对象Equals判断为真但哈希值不同的问题。

如果是.NET Core 2.1 / .NET Framework 4.7.1 及以上版本的项目,你也可以选择用官方提供的哈希组合工具类实现,写法同样简洁:

public override int GetHashCode() => HashCode.Combine(base.GetHashCode(), Prop3, Prop4);

内容的提问来源于stack exchange,提问作者UnionP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:36:03