C # operador "es" - es esa reflexión?

Un colega me hizo una pregunta interesante hoy: ¿es la palabra clave / operador de C # "se" considera una reflexión?

object tmp = "a string";
if(tmp is String)
{
}

¿Cómo se implementa este operador detrás de escena? ¿Requiere reflexión o introspección? O debido a la naturaleza fuertemente tipada del lenguaje, ¿se puede acceder de inmediato al Tipo del objeto como un atributo de nivel superior del objeto en la memoria?

MSDN Establece que:

Tenga en cuenta que el operador sólo considera las conversiones de referencia, las conversiones de boxeo y las conversiones de unboxing. Otras conversiones, como las conversiones definidas por el usuario, no son consideradas por el operador is.

La capacidad de considerar conversiones en caja y sin caja parece implicar para mí algún tipo de introspección.

Respuestas a la pregunta(3)

Su respuesta a la pregunta