Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ this[object key]

virtual ? object System.Collections.Hashtable.this[object key]
getsetinherited

Implements System.Collections.IDictionary.

Definition at line 479 of file Hashtable.cs.

480 {
481 get
482 {
483 if (key == null)
484 {
485 throw new ArgumentNullException("key", SR.ArgumentNull_Key);
486 }
487 bucket[] buckets = _buckets;
488 uint seed;
489 uint incr;
490 uint num = InitHash(key, buckets.Length, out seed, out incr);
491 int num2 = 0;
492 int num3 = (int)(seed % (uint)buckets.Length);
493 bucket bucket;
494 do
495 {
496 SpinWait spinWait = default(SpinWait);
497 while (true)
498 {
499 int version = _version;
500 bucket = buckets[num3];
501 if (!_isWriterInProgress && version == _version)
502 {
503 break;
504 }
505 spinWait.SpinOnce();
506 }
507 if (bucket.key == null)
508 {
509 return null;
510 }
511 if ((bucket.hash_coll & 0x7FFFFFFF) == num && KeyEquals(bucket.key, key))
512 {
513 return bucket.val;
514 }
515 num3 = (int)((num3 + incr) % (uint)buckets.Length);
516 }
517 while (bucket.hash_coll < 0 && ++num2 < buckets.Length);
518 return null;
519 }
520 set
521 {
523 }
524 }
uint InitHash(object key, int hashsize, out uint seed, out uint incr)
Definition Hashtable.cs:669
volatile bool _isWriterInProgress
Definition Hashtable.cs:407
virtual bool KeyEquals(object? item, object key)
Definition Hashtable.cs:918