C#은 Java 's Isinstance ()와 동일합니까?
-
08-07-2019 - |
문제
나는 알고있다 is
그리고 as
~을 위한 instanceof
, 그러나 반사는 어떻습니까? isinstance () 방법?
해결책
Java와 동일합니다 obj.getClass().isInstance(otherObj)
C#에서는 다음과 같습니다.
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
Java와 C#이 모두 런타임 유형 객체에서 작동하는 동안 (Java java.lang.Class
C# System.Type
)의 obj
(을 통해 .getClass()
vs .getType()
), Java 's isInstance
C#의 IsAssignableFrom
다른 것을 기대합니다 System.Type
물체.
다른 팁
bool result = (obj is MyClass); // Better than using 'as'
의존하고 사용합니다 is
캐스트 및 사용 결과를 사용하고 싶지 않다면 as
당신이한다면. 당신은 거의 쓰고 싶지 않습니다.
if(foo is Bar) {
return (Bar)foo;
}
대신에:
var bar = foo as Bar;
if(bar != null) {
return bar;
}
내 머리 꼭대기에서 당신은 또한 할 수 있습니다.
bool result = ((obj as MyClass) != null)
어느 쪽이 더 잘 수행 될지 확실하지 않습니다. 벤치 마크를 위해 다른 사람에게 맡길 게요 :)
아래 코드는 대안이 될 수 있습니다 IsAssignableFrom
.
parentObject.GetType().IsInstanceOfType(inheritedObject)
보다 타입. Isinstanceoftype MSDN의 설명.
제휴하지 않습니다 StackOverflow