public void Add(object key, object value)
{
if (key == null)
{
throw new ArgumentNullException("Argument cannot be null", "key");
}
version++;
DictionaryNode last = null;
DictionaryNode node;
for (node = head; node != null; node = node.next)
{
var oldKey = node.key;
if ((comparer == null) ? oldKey.Equals(key) : comparer.Compare(oldKey, key) == 0)
{
throw new ArgumentException(string.Format("Duplicate keys: new key: {0}, old value: {1}, new value: {2}", key, this[oldKey], value));
}
last = node;
}
// Not found, so add a new one
var newNode = new DictionaryNode();
newNode.key = key;
newNode.value = value;
if (last != null)
{
last.next = newNode;
}
else
{
head = newNode;
}
Count++;
}