我知道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