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.
Best Answer
Because
string
is 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
null
would make it inconsistent.Nullable<T>
works with the value types. Of note is the fact thatNullable
was not introduced on the original .NET platform so there would have been a lot of broken code had they changed that rule.(Courtesy @jcolebrand)