Assuming all new .NET 4.0 code
I see that there is the option to turn them on. However I don't see what the best practice is?
Is the best practice that once static checking is done, you really don't need to do runtime checking (since the compiler makes sure that the conditions are met)? Or are there scenarios where even though the compiler checks it for you, it is still possible that during runtime the condition will not be met?
Any good online discussions or articles on this. I see many that explain how to do either but not many that explains which is the best practice assuming all new .NET 4.0 code with no backwards compatability needed.