C# 是",;是";运算符仅为“";IsInstanceOfType";方法

C# 是",;是";运算符仅为“";IsInstanceOfType";方法,c#,types,keyword,isinstance,C#,Types,Keyword,Isinstance,以下代码段是否等效 class a {} class b:a {} b foo=new b(); //它来了 foo is a //…与…相同 typeof(a).isinstanceoftype(foo) 或者其他类型方法中的一个映射更接近is运算符。 e、 g.“IsAssignableFrom”或“IsubClassof”它不是,因为is在左侧允许空引用。它与is不同,它被翻译成操作码,而IsInstanceOf是类型上的正常虚拟调用。事实上,如果您查看IsInstanceOfT

以下代码段是否等效

class a
{}

class b:a
{}

b foo=new b();
//它来了

foo is a
//…与…相同

typeof(a).isinstanceoftype(foo)
或者其他类型方法中的一个映射更接近is运算符。
e、 g.“IsAssignableFrom”或“IsubClassof”

它不是,因为
is
在左侧允许空引用。

它与
is
不同,它被翻译成操作码,而
IsInstanceOf
类型
上的正常虚拟调用。事实上,如果您查看
IsInstanceOfType
,您将看到第一行代码实际上使用
is
执行比较,这将有效地导致
StackOverflowException


is
运算符导致IL代码中的操作。

相关:在.Net 4.0中,IsInstanceOfType的实现似乎简单多了。它基本上只是委托给IsAssignableFrom。