CSharp · Console
using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var primeMinisters = new PrimeMinistersByYearDictionary()
{
new PrimeMinister("James Callaghan", 1974),
new PrimeMinister("Margaret Thatcher", 1979),
new PrimeMinister("Tony Blair", 1997)
};
primeMinisters.Add(new PrimeMinister("John Major", 1990));
Console.WriteLine("Tony is " + primeMinisters[1997]);
var list = (IList<PrimeMinister>)primeMinisters;
Console.WriteLine("First PM is " + list[0]);
foreach (var pm in primeMinisters)
Console.WriteLine(pm);
}
}
public class PrimeMinistersByYearDictionary :
KeyedCollection<int, PrimeMinister>
{
protected override int GetKeyForItem(PrimeMinister item)
{
return item.YearElected;
}
}
public class PrimeMinister
{
public string Name { get; private set; }
public int YearElected { get; private set; }
public PrimeMinister(string name, int yearElected)
{
this.Name = name;
this.YearElected = yearElected;
}
public override string ToString()
{
return string.Format("{0}, elected: {1}", Name, YearElected);
}
}