代码检查:使用 'HashCode.Combine' 计算哈希代码
此检查会报告创建临时值元组并在其上调用 GetHashCode() 的哈希代码计算。 当 System.HashCode 可用时, HashCode.Combine(...) 能直接表达相同的意图,并且避免了使用临时元组。 对含有最多 8 个元组组件的 ValueTuple.GetHashCode() 调用会报告此检查。 对于更大的元组,应使用包含所有组件的哈希代码计算方式。
示例
using System;
public sealed class Customer(int id, string name)
{
public override int GetHashCode()
{
return (id, name).GetHashCode();
}
}
using System;
public sealed class Customer(int id, string name)
{
public override int GetHashCode()
{
return HashCode.Combine(id, name);
}
}
快速修复
将 ValueTuple.GetHashCode() 调用替换为 HashCode.Combine(...)。 元组元素名称不会影响哈希代码,也不会包含在替换中。
2026年 7月 17日