Many of the fundamental utility types that are heavily used in .NET programs are reliant on a correct implementation of equality to work properly. Get the implementation wrong, and things will seem to work, but they won’t be doing quite what you expect. This can have some subtle effects that lead to nasty problems. In this series, we’ll look at what those problems are and how to avoid them.