我知道is
和as
为instanceof
,但反射isInstance()方法呢?什么是C#等价于Java的isInstance()?
82
A
回答
47
Java的obj.getClass().isInstance(otherObj)
的C#中的等效如下:
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
注意的是,虽然通过.getClass()
VS .getType()
一个obj
(的运行时类型对象(爪哇java.lang.Class
≣C#System.Type
)上Java和C#工作),Java的isInstance
将一个对象作为参数,而C#的IsAssignableFrom
需要另一个System.Type
对象。
2
,就在我的头顶,你也可以这样做:
bool result = ((obj as MyClass) != null)
不知道这将有更好的表现。我把它留给别人基准:)
172
bool result = (obj is MyClass); // Better than using 'as'
36
取决于使用is
如果你不想用铸的结果,并使用as
如果你这样做。你很少想写:
if(foo is Bar) {
return (Bar)foo;
}
相反的:
var bar = foo as Bar;
if(bar != null) {
return bar;
}
3
下面的代码可以替代IsAssignableFrom
。
parentObject.GetType().IsInstanceOfType(inheritedObject)
请参阅Type.IsInstanceOfType在MSDN中的说明。
相关问题
- 1. 什么是Java的instanceof和isInstance()的VB等价物?
- 2. Java中的IntPtr(C#)等价于什么?
- 3. 什么是Java Socket.getInetAddress()的C#等价物?
- 4. 什么是Java DecimalFormat的c#等价物?
- 5. python中isinstance的issubclass等价物是什么?
- 6. Ruby中的Java CLASSPATH等价于什么?
- 7. 什么是java.io.Serializable的C/C++等价?
- 8. Java的readInt()等价于C?
- 9. C中的PHP vsprintf()等价于什么?
- 10. C++中的Thread.SetApartmentState等价于什么?
- 11. 什么等价于C#中的Microsoft.VisualBasic.Collection?
- 12. 什么是InterruptedException(Java)的.NET等价物?
- 13. 什么是Java Stream.collect的Kotlin等价物?
- 14. 什么是ASP.NET Membership的Java等价物?
- 15. 什么是.NET TypeCode的Java等价物?
- 16. 什么是Debugger.Launch()的Java等价物?
- 17. 什么是PHP flush()的Java等价物?
- 18. 什么是go的等价于argv [0]?
- 19. C#中TreeBidiMap的等价物是什么?
- 20. 什么是C#中的vbNullChar等价物?
- 21. 什么是ChrW(e.KeyCode)的C#等价物?
- 22. C#中memset的等价物是什么?
- 23. 什么是C?:operator的Ruby等价物?
- 24. C#中bigint的等价物是什么?
- 25. 什么是CRT的C++等价物?
- 26. 什么是UINT32_MAX的C++等价物?
- 27. 什么是MsgWaitForMultipleObjects的C#等价物?
- 28. 什么是EventWaitHandle的Objective C等价物?
- 29. 什么是C++ typeid的Scala等价物?
- 30. 在Linq C#中Java的Stream#Peek方法等价于什么?
注意IsAssignableFrom需要一个Type而不是一个对象,因此您需要实际执行OtherObj.getType()。 – FlySwat 2008-11-11 23:25:22
感谢乔恩 - 请记住,这是一个维基!我不讨厌人们纠正我的错误。 – 2008-11-11 23:34:23