一位同事今天问我一个有趣的问题 - C#关键字/运算符"是否被认为是反思?
object tmp = "a string";
if(tmp is String)
{
}
Run Code Online (Sandbox Code Playgroud)
这个操作符是如何在幕后实现的?它需要反思还是内省?或者由于语言的强类型性质,对象的类型是否可以作为内存中对象的顶级属性立即访问?
MSDN声明:
请注意,is运算符仅考虑引用转换,装箱转换和拆箱转换.is运算符不考虑其他转换,例如用户定义的转换.
考虑盒装和非盒装转换的能力似乎意味着某种内省.