SqlParameter con el valor predeterminado establecido en 0 no funciona como se esperaba

Estaba haciendo algo como esto:

SqlParameter param = new SqlParameter("@Param", 0) { SqlDbType = SqlDbType.Int };

private void TestParam(SqlParameter param) {
   string test = param.Value.ToString();  // Getting NullReferenceException here
}

Pero dejo de recibir la excepción cuando lo pongo así:

SqlParameter param = new SqlParameter("@Param", SqlDbType.Int)  { Value = 0 };

private void TestParam(SqlParameter param) {
    string test = param.Value.ToString();  // Everything OK
}

¿Alguien puede decirme por qué SqlParameter supone que 0 es lo mismo que nulo?

Editar MSDN explica esto aquí:SqlParameter Constructor

Respuestas a la pregunta(2)

Su respuesta a la pregunta