Nullable ToString()

IamDeveloper picture IamDeveloper · Mar 15, 2010 · Viewed 32.2k times · Source

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?

Answer

Tomas Vana picture Tomas Vana · Mar 15, 2010

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 be null, you usually expect a NullReferenceException, although here it isn't thrown.