using System.Collections.Generic;
public static void Main()
Woman woman1 = new Woman("Hannah");
Woman woman2 = new Woman("Wendy");
Woman woman3 = new Woman("Alice");
Man man1 = new Man("John");
Man man2 = new Man("Fabian");
Man man3 = new Man("Andrei");
Man man4 = new Man("Krishna");
Dictionary<IPerson, int> scores = new Dictionary<IPerson, int>();
public class Man : IPerson
public static int IDCounter = 0;
public int Id { get; set; }
public string Name { get; set; }
public string GetGender()
public override bool Equals(object obj)
return this.Id == man.Id;
public override int GetHashCode()
return this.Id.GetHashCode();
public class Woman : IPerson
public static int IDCounter = 0;
public int Id { get; set; }
public Woman(string name)
public string Name { get; set; }
public string GetGender()
public override bool Equals(object obj)
var woman = obj as Woman;
return this.Id == woman.Id;
public override int GetHashCode()
return this.Id.GetHashCode();