请问对于==和!=的重载书上说需要重载Equals()和GetHashCode()函数,可是我没有重载好像也可以实现,请问这是怎么回事?
    还有就是Equals()和GetHashCode()这两个函数是干什么用的?
    初学者自知问题很菜,不好意思,请大虾们不吝指导

解决方案 »

  1.   

    在msdn上查一下吧
    using System;public class Sample {
        void Method() {
        Object Obj1 = new Object();
        Object Obj2 = new Object();
        Console.WriteLine(Obj1.Equals(Obj2)); //===> false
        Obj2 = Obj1;
        Console.WriteLine(Obj1.Equals(Obj2)); //===> true
        }
    }
    用作特定类型的哈希函数,适合在哈希算法和数据结构(如哈希表)中使用。[Visual Basic]
    Public Overridable Function GetHashCode() As Integer[C#]
    public virtual int GetHashCode();[C++]
    public: virtual int GetHashCode();[JScript]
    public function GetHashCode() : int;返回值
    当前 Object 的哈希代码。备注
    此方法可由派生类重写。值类必须重写此方法,以提供适合该类并且确保哈希表中有更好的分布的哈希函数。在哈希表中可以用作键的类也必须重写此方法,因为在哈希表中用作键的对象对于通过此方法生成类自己的哈希代码是必需的。但是,在构造 Hashtable 时,如果用作键的对象没有提供有用的 GetHashCode 实现,您可以提供另外一个基于 System.Collections.IHashCodeProvider 接口的哈希代码提供程序。