我知道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 DecimalFormat的c#等价物?
- 4. 什么是C++ deque的Java等价物?
- 5. 什么是Java Socket.getInetAddress()的C#等价物?
- 6. python中isinstance的issubclass等价物是什么?
- 7. 什么是C#等价于std :: vector :: iterators?
- 8. Ruby中的Java CLASSPATH等价于什么?
- 9. 什么是java.io.Serializable的C/C++等价?
- 10. C#等价于Java的Character.digit
- 11. C++等价于Java的BlockingQueue
- 12. C#上的CURLOPT_RETURNTRANSFER等价于什么?
- 13. C++中的Thread.SetApartmentState等价于什么?
- 14. 什么等价于C#中的Microsoft.VisualBasic.Collection?
- 15. C#中的dblarr(3,3)等价于什么?
- 16. C中的PHP vsprintf()等价于什么?
- 17. 什么是.NET TypeCode的Java等价物?
- 18. 什么是InterruptedException(Java)的.NET等价物?
- 19. java中fopen_s()的等价物是什么?
- 20. 什么是Debugger.Launch()的Java等价物?
- 21. 什么是Java中的“ByRef”等价物?
- 22. java中cin.ignore()的等价物是什么?
- 23. 什么是Java Stream.collect的Kotlin等价物?
- 24. 什么是$ var的Java等价物?
- 25. 什么是PHP flush()的Java等价物?
- 26. 什么是ASP.NET Membership的Java等价物?
- 27. 什么是go的等价于argv [0]?
- 28. rlwinm的C++等价物是什么? (PowerPC)
- 29. 什么是C++中的instanceof等价物?
- 30. 什么是EventWaitHandle的Objective C等价物?
注意IsAssignableFrom需要一个Type而不是一个对象,因此您需要实际执行OtherObj.getType()。 – FlySwat 2008-11-11 23:25:22
感谢乔恩 - 请记住,这是一个维基!我不讨厌人们纠正我的错误。 – 2008-11-11 23:34:23