Supposed we have a class below
public class TestHash { public int x; int y; public TestHash(int x, int y) { this.x = x; this.y = y; } public override int GetHashCode() { Console.WriteLine("判断hashcode"); return x + y; } public override bool Equals(object obj) { Console.WriteLine("判断equals"); return base.Equals(obj); } public override string ToString() { return x.ToString() + y.ToString(); } }
Hashtable ht = new Hashtable(); TestHash cc = new TestHash(2, 3); TestHash cc2 = new TestHash(1, 4); TestHash cc3 = new TestHash(3, 3); ht.Add(cc, "test1"); ht.Add(cc2, "test2"); ht.Add(cc3, "test3"); Console.WriteLine("Begin print...."); foreach (TestHash im in ht.Keys) { Console.WriteLine(im.ToString() + " ----- " + ht[im]); } Console.Read();
See also:
http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx
http://msdn.microsoft.com/zh-cn/library/system.object.gethashcode(v=vs.110).aspx