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

使用System.Reflection.MethodInfo实现Delegate的GetHashCode()性能疑问

自定义Delegate的GetHashCode实现与性能顾虑

我需要实现IEqualityComparer<Delegate>接口来定义Delegate的GetHashCode()逻辑,因为要将Delegate作为字典的键使用。

Delegate的默认GetHashCode()实现如下:

public override int GetHashCode()
{
    return base.GetType().GetHashCode();
}

这个实现的问题在于,所有同类型的Delegate实例都会返回相同的哈希码,这会导致以Delegate为键的字典查找复杂度退化为O(n),和线性查找效率一致。

为此我考虑自行实现,借助System.Reflection.MethodInfo来生成哈希码,代码如下:

public int GetHashCode(Delegate? obj)
{
    if (obj == null)
        return 0;
    else
        return obj.Method.GetHashCode();
}

但我担心这个实现的性能:MethodInfo.GetHashCode()属于反射相关操作,而我知道反射的调用成本通常较高,而GetHashCode()会被字典频繁调用,性能至关重要,所以想确认这个实现是否会过于缓慢。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:35:28