我知道的is和as为instanceof,但对于反射isInstance()方法?
我知道的is和as为instanceof,但对于反射isInstance()方法?
Answers:
obj.getClass().isInstance(otherObj)C#中的Java等效项如下:
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
请注意,尽管Java和C#都在(通过vs )的运行时类型对象(java.lang.ClassJava≣C#System.Type)上工作,但Java的将一个对象作为其参数,而C#则需要另一个对象。obj.getClass().getType()isInstanceIsAssignableFromSystem.Type
is相比之下,需要一个类型名称。这就是OP想要的:与Java等效isInstance。尽管支持投票的数目可笑,但另一个答案却是错误的。
bool result = (obj is MyClass); // Better than using 'as'
new Child() is Parent)
以下代码可以替代IsAssignableFrom。
parentObject.GetType().IsInstanceOfType(inheritedObject)
请参阅MSDN中的Type.IsInstanceOfType描述。