什么是C#等效于Java的isInstance()?

die*_*ogs 86 c# reflection introspection instanceof

我知道isasfor instanceof,但是反射isInstance()方法怎么样?

Ana*_*tts 180

bool result = (obj is MyClass); // Better than using 'as'
Run Code Online (Sandbox Code Playgroud)

  • 是的,它确实如何显示在上面 (2认同)

Kon*_*lph 52

obj.getClass().isInstance(otherObj)C#中Java的等价如下:

bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
Run Code Online (Sandbox Code Playgroud)

请注意,虽然Java和C#都在(via vs )的运行时类型对象(java.lang.ClassJava≣C#System.Type)上工作,但Java 将对象作为其参数,而C#则需要另一个对象.obj.getClass().getType()isInstanceIsAssignableFromSystem.Type

  • 谢谢乔恩 - 记住,这是一个维基!我并不反感人们纠正我的错误. (3认同)

小智 39

取决于,is如果您不想使用演员表的结果,请使用,as如果您这样做则使用.你几乎不想写:

if(foo is Bar) {
    return (Bar)foo;
}
Run Code Online (Sandbox Code Playgroud)

代替:

var bar = foo as Bar;
if(bar != null) {
    return bar;
}
Run Code Online (Sandbox Code Playgroud)