我有一个存储方法调用结果的字典。 Dictionary键是方法调用签名,即 具有以下成员的对象。
string _name,
Type[] _argTypes,
string[] _argNames,
object[] _argValues.
我必须覆盖TryGetValue的GetHashCode方法才能正确比较。 比较方法签名的最有效方法是什么?即上面的4个参数。
e.g。这对我来说似乎没有效率。
public override int GetHashCode()
{
if(_name!=null)
_hashCode = _name.GetHashCode();
if (_argTypes != null)
{
foreach (object value in _argTypes)
_hashCode ^= value.GetHashCode();
}
if (_argNames != null)
{
foreach (object value in _argNames)
_hashCode ^= value.GetHashCode();
}
if (_argValues != null)
{
foreach (object value in _argValues)
_hashCode ^= value.GetHashCode();
}
}