So you can\'t inherit string. You can\'t make a non-nullable string. But I want to do this. I want a class, let\'s call it nString that returns a d
No, you cannot do this.
The only way to create a non-nullable type is to declare a struct - structs, however, cannot inherit or be inherited from.
Using properties as you are is most likely the best way, or null-coalescing during deserialization as previously suggested, but C# is simply designed to handle null values.