I see everywhere constructions like:
int? myVar = null;
string test = myVar.HasValue ? myVar.Value.ToString() : string.Empty;
Why not use simply:
string test = myVar.ToString();
Isn’t that exactly the same ?
At least Reflector says that:
public override string ToString()
{
if (!this.HasValue)
{
return "";
}
return this.value.ToString();
}
So, is that correct (the shorter version) or am I missing something?
You are quite correct. Also in this question, the former solution is suggested while nobody actually notices
ToString()already gives the correct answer.Maybe the argument for the more verbose solution is readability: When you call
ToString()on something that is supposed to benull, you usually expect aNullReferenceException, although here it isn’t thrown.