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

◆ Find()

bool System.Linq.Parallel.HashLookup< TKey, TValue >.Find ( TKey key,
bool add,
bool set,
[MaybeNullWhen(false)] ref TValue value )
inlineprivate

Definition at line 78 of file HashLookup.cs.

79 {
81 for (int num = buckets[keyHashCode % buckets.Length] - 1; num >= 0; num = slots[num].next)
82 {
83 if (slots[num].hashCode == keyHashCode && AreKeysEqual(slots[num].key, key))
84 {
85 if (set)
86 {
87 slots[num].value = value;
88 return true;
89 }
90 value = slots[num].value;
91 return true;
92 }
93 }
94 if (add)
95 {
96 int num2;
97 if (freeList >= 0)
98 {
99 num2 = freeList;
101 }
102 else
103 {
104 if (count == slots.Length)
105 {
106 Resize();
107 }
108 num2 = count;
109 count++;
110 }
111 int num3 = keyHashCode % buckets.Length;
113 slots[num2].key = key;
115 slots[num2].next = buckets[num3] - 1;
116 buckets[num3] = num2 + 1;
117 }
118 return false;
119 }
bool AreKeysEqual(TKey key1, TKey key2)
Definition HashLookup.cs:65

References System.Linq.Parallel.HashLookup< TKey, TValue >.AreKeysEqual(), System.Linq.Parallel.HashLookup< TKey, TValue >.buckets, System.Linq.Parallel.HashLookup< TKey, TValue >.count, System.Linq.Parallel.HashLookup< TKey, TValue >.freeList, System.Linq.Parallel.HashLookup< TKey, TValue >.GetKeyHashCode(), System.Linq.Parallel.HashLookup< TKey, TValue >.Slot.hashCode, System.Linq.Parallel.HashLookup< TKey, TValue >.Slot.key, System.key, System.Linq.Parallel.HashLookup< TKey, TValue >.Slot.next, System.Linq.Parallel.HashLookup< TKey, TValue >.Resize(), System.Linq.Parallel.HashLookup< TKey, TValue >.slots, System.Linq.Parallel.HashLookup< TKey, TValue >.Slot.value, and System.value.

Referenced by System.Linq.Parallel.HashLookup< TKey, TValue >.Add(), and System.Linq.Parallel.HashLookup< TKey, TValue >.TryGetValue().