That's not really true. Code contracts are just a library , it's certainly not "traditional" in C# to use that to check for invalid state. Traditionally you just check the value before assignment. And if you do this your entire problem "goes away".
Gotta say this is one of the most contrived "F# is better than C#" example i ever saw.