Dictionary
always checks GetHashCode
first, than goes forward to look into the elements of the bucket
Assume Dictionary
as an Array
with length L, on new element addition it calculates the appropriate index like
index = item.GetHashCode() % L
and put that element to the end of the appropriate bucket (just a model, in real word it also takes Abs, and re-build an array if necessary)
So in any point it have the following structure
---
0 -> Item1, Item2
---
1 -> Item3
---
2
---
...
---
L-1-> Item7
On lookup, dictionary calculates index again, and uses Equality to check only bucket elements of calculated index.