using System.Collections.Generic;
public static void Main()
Person bob = new Person(){Name="bob", EmailAddress="bob@abc.com"};
Person cat = new Person(){Name="cat", EmailAddress="cat@abc.com"};
var addressBook = new Dictionary<Person, Person>();
addressBook.Add(bob, bob);
addressBook.Add(cat, cat);
var findBob = new Person(){Name = "bob"};
var bobFound = addressBook[findBob];
Console.WriteLine(bobFound.EmailAddress);
public string Name{get;set;}
public string EmailAddress{get;set;}
public override bool Equals(Object obj)
return obj != null && obj is Person && ((Person)obj).Name == this.Name;
public override int GetHashCode()
return Name.GetHashCode();