【发布时间】:2010-11-11 03:57:08
【问题描述】:
今天一位同事问了我一个有趣的问题——C# 关键字/运算符“is”是否被认为是反射?
object tmp = "a string";
if(tmp is String)
{
}
这个操作符是如何在幕后实现的?它需要反思还是自省?或者由于语言的强类型特性,对象的类型是否可以作为内存中对象的顶级属性立即访问?
MSDN 声明:
请注意,is 运算符仅考虑引用转换、装箱转换和拆箱转换。 is 运算符不考虑其他转换,例如用户定义的转换。
在我看来,考虑装箱和未装箱转换的能力似乎暗示了某种自省。
【问题讨论】:
-
MSDN 链接已损坏。
标签: c# .net reflection introspection typing