我知道的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.Class
Java≣C#System.Type
)上工作,但Java的将一个对象作为其参数,而C#则需要另一个对象。obj
.getClass()
.getType()
isInstance
IsAssignableFrom
System.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描述。