It’s quite annoying to test all my strings for null before I can safely apply methods like ToUpper(), StartWith() etc…
If the default value of string were the empty string, I would not have to test, and I would feel it to be more consistent with the other value types like int or double for example.
Additionally Nullable<String> would make sense.
So why did the designers of C# choose to use null as the default value of strings?
Note: This relates to this question, but is more focused on the why instead of what to do with it.
Because
stringis a reference type and the default value for all reference types isnull.That is consistent with the behaviour of reference types. Before invoking their instance members, one should put a check in place for a null reference.
Assigning the default value to a specific reference type other than
nullwould make it inconsistent.Nullable<T>works with the value types. Of note is the fact thatNullablewas not introduced on the original .NET platform so there would have been a lot of broken code had they changed that rule.(Courtesy @jcolebrand)