什么是C#相当于Java的isInstance()?
我知道is和为instanceof ,但reflectionisInstance()方法呢?
Java中的obj.getClass().isInstance(otherObj)在C#中的等价物如下所示:
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
请注意,虽然Java和C#都是通过.getClass()与.getType() )对obj的运行时types对象(Java java.lang.Class ?C# System.Type )进行操作,Java的isInstance .getType()对象为参数而C#的IsAssignableFrom需要另一个System.Type对象。
bool result = (obj is MyClass); // Better than using 'as'
取决于,如果你不想使用演员的结果和使用as就像你一样使用。 你几乎不想写:
if(foo is Bar) { return (Bar)foo; }
代替:
var bar = foo as Bar; if(bar != null) { return bar; }
下面的代码可以替代IsAssignableFrom 。
parentObject.GetType().IsInstanceOfType(inheritedObject)
请参阅MSDN中的Type.IsInstanceOfType说明。
就在我头顶上,你也可以这样做:
bool result = ((obj as MyClass) != null)
不知道哪个会更好。 我会留给别人来基准:)