System.Collections.Generic.Dictionary.Insert
Code for System.Collections.Generic.Dictionary<TKey,TValue>.Insert(TKey, TValue, Boolean)
Try compare this to System.Collections.Hashtable.Insert . They are similar in many ways.
private void Insert(TKey key, TValue value, bool add)
{
int index;
if (key == null)
{
ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key);
}
if (this.buckets == null)
{
this.Initialize(0);
}
int num = this.comparer.GetHashCode(key) & 0x7fffffff;
for (int i = this.buckets[num % this.buckets.Length]; i >= 0; i = this.entries[i].next)
{
if ((this.entries[i].hashCode == num) && this.comparer.Equals(this.entries[i].key, key))
{
if (add)
{
ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_AddingDuplicate);
}
this.entries[i].value = value;
this.version++;
return;
}
}
if (this.freeCount > 0)
{
index = this.freeList;
this.freeList = this.entries[index].next;
this.freeCount--;
}
else
{
if (this.count == this.entries.Length)
{
this.Resize();
}
index = this.count;
this.count++;
}
int num4 = num % this.buckets.Length;
this.entries[index].hashCode = num;
this.entries[index].next = this.buckets[num4];
this.entries[index].key = key;
this.entries[index].value = value;
this.buckets[num4] = index;
this.version++;
}
Other Interesting Posts
No Comments »
RSS feed for comments on this post. TrackBack URL