public void Remove(object key)
{
if (key == null)
{
throw new ArgumentNullException("key", "error");
}
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)
{
break;
}
last = node;
}
if (node == null)
{
return;
}
if (node == head)
{
head = node.next;
}
else
{
last.next = node.next;
}
Count--;
}