Totally unofficial guess:
If a constructor allowed an IEnumerable<KeyValuePair<TKey, TValue>>
you would have been able to supply multiple items with the same key and what would be the expected behavior of that?
E.g. you could have done something like this:
var kvps = new[]
{
new KeyValuePair<int, string>(1, "Foo"),
new KeyValuePair<int, string>(1, "Bar"),
new KeyValuePair<int, string>(1, "Baz")
}
var dic = new Dictionary<int, string>(kvps);
You could argue that this should simply throw an exception to be consistent with the behavior of the Add method, but I would guess that the design team thought it would be a greater source of confusion than actually useful...
Mark Seemann
2010-02-12 15:38:33