C # "is" -Operator - ist das ein Spiegelbild?

Ein Kollege hat mir heute eine interessante Frage gestellt: Wird das C # -Schlüsselwort / der Operator als Reflexion betrachtet?

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

Wie wird dieser Operator hinter den Kulissen implementiert? Benötigt es Nachdenken oder Selbstbeobachtung? Oder ist der Typ des Objekts aufgrund der stark typisierten Sprache sofort als Attribut der obersten Ebene des Objekts im Speicher verfügbar?

MSDN besagt, dass:

Beachten Sie, dass der Operator is nur Referenzkonvertierungen, Boxing-Konvertierungen und Unboxing-Konvertierungen berücksichtigt. Andere Konvertierungen, z. B. benutzerdefinierte Konvertierungen, werden vom Operator is nicht berücksichtigt.

Die Fähigkeit, Boxed- und Unboxed-Conversions zu berücksichtigen, scheint mir eine Art Selbstbeobachtung zu bedeuten.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage