Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.25 KB | None | 0 0
  1.         public bool Remove(TKey key) {
  2.             if(key == null) {
  3.                 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key);
  4.             }
  5.  
  6.             if (buckets != null) {
  7.                 int hashCode = comparer.GetHashCode(key) & 0x7FFFFFFF;
  8.                 int bucket = hashCode % buckets.Length;
  9.                 int last = -1;
  10.                 for (int i = buckets[bucket]; i >= 0; last = i, i = entries[i].next) {
  11.                     if (entries[i].hashCode == hashCode && comparer.Equals(entries[i].key, key)) {
  12.                         if (last < 0) {
  13.                             buckets[bucket] = entries[i].next;
  14.                         }
  15.                         else {
  16.                             entries[last].next = entries[i].next;
  17.                         }
  18.                         entries[i].hashCode = -1;
  19.                         entries[i].next = freeList;
  20.                         entries[i].key = default(TKey);
  21.                         entries[i].value = default(TValue);
  22.                         freeList = i;
  23.                         freeCount++;
  24.                         version++;
  25.                         return true;
  26.                     }
  27.                 }
  28.             }
  29.             return false;
  30.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement