C# lets the programming define a default value on a class property, so that GUI widgets can test the property to see if it still has the default value. Visual Studio, for example, bolds any properties that have a non-default value, making them easy to pick out.
Unfortunately, the default value isn't used to actually initialize the property. The initialization must be done elsewhere in the code, typically in the class's constructor. Having to type the same value in two separate places in the code is error-prone, since it's easy to inadvertently change the value in one place and forget to change it in the other.
Debugging is a fundamental programming skill. It's also one of the least fun and least glamorous tasks a programmer faces. In order to reduce time spent debugging, I've invested time in examining my debugging methods. Below, I've documented the techniques that most reliably lead me to a solved problem.
I'll avoid getting into the gritty details of particular tools and instead stick to basic principles that can be applied in almost any situation.