Operator C # „jest” - czy to jest odbicie?

Kolega zadał mi dziś interesujące pytanie - czy słowo kluczowe C / operator „jest” uważane za odbicie?

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

Jak ten operator jest wdrażany za kulisami? Czy wymaga to refleksji lub introspekcji? Czy z powodu silnie typowej natury języka, czy typ obiektu jest natychmiast dostępny jako atrybut najwyższego poziomu obiektu w pamięci?

MSDN stwierdza, że:

Należy pamiętać, że operator is bierze pod uwagę tylko konwersje referencyjne, konwersje boksu i konwersje do odpakowania. Inne konwersje, takie jak konwersje zdefiniowane przez użytkownika, nie są brane pod uwagę przez operatora.

Zdolność do rozważania konwersji w pudełkach i bez pudeł wydaje się sugerować jakąś introspekcję.

questionAnswers(3)

yourAnswerToTheQuestion