Assigning null to a struct is generally disallowed, but he is just a rule the compiler enforces when generating the IL. Since the compiler parses all your code and figures out what it means, it can recognize all kinds of rules, even ones that, to you, may appear to be exceptions.