C # “é” operador - é essa reflexão?
Um colega me fez uma pergunta interessante hoje - a palavra-chave / operador C # "é" considerada reflexão?
object tmp = "a string";
if(tmp is String)
{
}
Como este operador é implementado nos bastidores? Requer reflexão ou introspecção? Ou devido à natureza fortemente tipada da linguagem, o Tipo do objeto é imediatamente acessível como um atributo de nível superior do objeto na memória?
MSDN afirma que:
Tenha em atenção que o operador is apenas considera conversões de referência, conversões de boxing e conversões de unboxing. Outras conversões, como as conversões definidas pelo usuário, não são consideradas pelo operador is.
A capacidade de considerar conversões in-box e sem caixa parece me sugerir algum tipo de introspecção.