class Program
{
static void Main(string[] args)
{
var dic = new Dictionary<Person, int>();
dic.Add(new Person {Name = "ABC", Age = 18}, 1);
dic.Add(new Person { Name = "Captain", Age = 24 }, 1);
dic.Add(new Person { Name = "Knee", Age = 28 }, 1);
dic.Add(new Person { Name = "Knee", Age = 28 }, 2);
foreach (var item in dic)
{
Console.WriteLine(string.Format("{0},{1}", item.Key.Name, item.Key.Age));
}
Console.ReadKey();
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (!(obj is Person))
{
return false;
}
var p = (Person) obj;
Console.WriteLine(string.Format("Equals{0}", p.Name));
return this.Name == p.Name && this.Age == p.Age;
}
public override int GetHashCode()
{
Console.WriteLine(string.Format("GetHashCode{0}", this.Name));
return Name.GetHashCode() + Age*37;
}
}