public class Paircollection : List>
{
public void Add(T1 value1, T2 value2)
{
Add(new Pair(value1, value2));
}
}
and then
var temp = new Paircollection
{
{0, "bob"},
{1, "phil"},
{0, "nick"}
};
will work. Essentially you're just creating a version of List>
that knows how to do the right Add things.
This is obviously expandable to any other class than Pair (in a way that the dictionary solutions aren't).
Thanks to Yuriy Faktorovich for helping me with my initial understanding and the linked question for pointing me in teh right direction.