A colleague asked me an interesting question today - is the C# keyword/operator "is" considered reflection?
object tmp = "a string";
if(tmp is String)
{
}
How is this operator implemented behind the scenes? Does it require reflection or introspection? Or because of the strongly typed nature of the language, is the Type of the object immediately accessable as a top-level attribute of the object in memory?
MSDN states that:
Note that the is operator only considers reference conversions, boxing conversions, and unboxing conversions. Other conversions, such as user-defined conversions, are not considered by the is operator.
The ability to consider boxed and unboxed conversions seems to imply to me some sort of introspection.