¿Tiene algún tipo el tipo null
? ¿Cómo se representa un valor nulo internamente? ¿Qué está sucediendo en el siguiente código?En .Net/C#, ¿es nulo fuertemente tipado?
void Foo(string bar) {...}
void Foo(object bar) {...}
Foo((string)null);
Editar: Las respuestas han sido hasta ahora demasiado inespecíficos y de alto nivel. Entiendo que un objeto de tipo de referencia consiste en un puntero en la pila que apunta a una ubicación en el montón que contiene un índice de bloque de sincronización, un manejador de tipo y los campos del objeto. Cuando establezco una instancia de un objeto en null
, ¿hacia dónde apunta exactamente el puntero en la pila? Y en el fragmento de código, ¿el molde simplemente se usa por el compilador de C# para decidir a qué sobrecarga llamar, y no hay realmente lanzando null?
Busco una respuesta en profundidad por alguien que entienda el funcionamiento interno CLR.
Entonces, ¿qué exactamente estará en la pila cuando me refiero a 'null'? –
@Matt: editado para agregar más detalles de bajo nivel. ¿Es esto suficiente? –
@Greg: Gracias - Estaba ocupado en el trabajo, así que no tuve tiempo de revisar IL y la especificación de ECMA. Esto ha arañado mi picazón intelectual. –