我定义了如下一个类。
Class Key
{
    public object[] fields;
    public equals(object obj)
    {
          //实现相等的算法。
    }
    public GetHashCode()
    {
       //?
    }
}上面的GetHashCode应该如何实现比较好?
另外,什么样的生成HashCode的算法是比较好的?通常都怎么实现?

解决方案 »

  1.   

    #region 覆盖object类的一些方法 zhoufoxcn
    public override int GetHashCode()
    {
    return String.Format("{0}",this.MagID).GetHashCode();
    } /// <summary>
    /// 比较两本杂志是否是同一本杂志。
          /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public override bool Equals(object obj)
    {
    OrderItemInfo orderItemInfo=(OrderItemInfo)obj;
    if(orderItemInfo.MagID.CompareTo(this.MagID)==0)
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    #endregion
      

  2.   

    根据自己实际需要确定即可,例如对于两个orderItemInfo,认为只要MagID一致就认为是同一个。
    对于人,可以认为两个人的身份证号码一样,那么就是同一个人,类推。如果两个对象相等Equals,那么GetHashCode()是一样的,所以在上面return String.Format("{0}",this.MagID).GetHashCode();就是返回MagID的HashCode。
      

  3.   

    我想知道,针对我那个类,应该如何实现GetHashCode?
      

  4.   

    哦?
    我还是不太懂,怎么生成HashCode。