public long Remove( long key )
{
LongHashtableEntry[] tab = table;
int hash = key.GetHashCode();
int index = ( hash & 0x7FFFFFFF ) % tab.Length;
for ( LongHashtableEntry e = tab[index], prev = null ; e != null ; prev = e, e = e.next ) {
if ( e.hash == hash && e.key == key ) {
if ( prev != null )
prev.next = e.next;
else
tab[index] = e.next;
--count;
return e.value;
}
}
return 0;
}