using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using System.Threading; using System.IO; using System.Security.Cryptography; using Common; namespace ConsoleApplication2 { public class Test { private string _id; public string Id { get { return _id; } set { _id = value; } } public Test(string id) { _id = id; } public override int GetHashCode() { Console.WriteLine("GetHashCode()"); return Id.Length; } public override bool Equals(object obj) { Console.WriteLine("Equals()"); return Id == (obj as Test).Id; } } class Program { /// <summary> /// 如果GetHashCode相等则不用Equals了,否则需要Equals /// </summary> /// <param name="args"></param> static void Main(string[] args) { Dictionary<Test, string> dc = new Dictionary<Test, string>(); Test t1 = new Test("a"); Test t2 = new Test("b"); Test t3 = new Test("cc"); dc.Add(t1, ""); Console.WriteLine("----------------"); Console.WriteLine(dc.ContainsKey(t1)); Console.WriteLine("----------------"); Console.WriteLine(dc.ContainsKey(t2)); Console.WriteLine("----------------"); Console.WriteLine(dc.ContainsKey(t3)); } } }