문제

나는 알고있다 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의 설명.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top