Saturday, March 03 2018
equality
dotnet
You can get by without consideration of equality in .NET projects for quite some time without having too many problems. Eventually, however, the time comes when you have to dig into those odd problems and fix things properly.
Read more »
Saturday, March 10 2018
equality
dotnet
Having established the importance of equality in .NET, we can look at the different kinds of equality that you might encounter. There are three - Reference, Value and Entity equality.
Read more »
Saturday, March 17 2018
equality
csharp
If we’re going to implement equality correctly, we need to consider the contract we’re implementing - what are the characteristics of a proper implementation of equality? The first characteristic we need to consider is symmetry.
Read more »
Saturday, March 24 2018
equality
dotnet
After symmetry, another aspect of the equality contract is .GetHashCode()
. When you first override .Equals(object)
, the C# compiler will helpfully remind you that you must also override .GetHashCode()
.
Read more »
Saturday, March 31 2018
equality
dotnet
Now that we’ve talked about the importance of implementing equality, the different kinds of equality, and about the contracts required of our implementations, we can get down to actually writing some code.
Read more »
Saturday, April 07 2018
equality
dotnet
Building on our implementation of entity equality, we are now in a position to implement value equality. This is more complex because it tends to have a greater number of factors to consider.
Read more »
Saturday, April 14 2018
equality
dotnet
At the opening of this series I wrote about how a correct implementation of equality is essential for the correct behaviour of many fundamental .NET types - including List
, HashSet
and Dictionary
. Here’s an example to show how they can break.
Read more »