StringBuilder.Equals

Interesting note: StringBuilder instances are only considered equal if Capacity, MaxCapacity and the string value are all the same. I guess it makes sense in a way, but it means I can't do a if (a == b) check because who knows what could have changed Capacity or MaxCapacity. So rather I have to do a if (a.ToString() == b.ToString())instead - messy.

Since StringBuilder is supposed to be a mutable string I would expect to be able to do comparisons on it like a string and not have internal state not related to the actual value of the object play a role.