[c#] Java의 isInstance ()에 해당하는 C #은 무엇입니까?

내가 알고있는 isas에 대한 instanceof,하지만 반사에 대한 isInstance () 방법은?



답변

obj.getClass().isInstance(otherObj)C # 의 Java에 해당하는 것은 다음과 같습니다.

bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());

Java와 C # 모두 ( vs 를 통해 )의 런타임 유형 객체 (Java java.lang.Class≣ C # System.Type)에서 작동 하지만 Java 는 객체를 인수로 사용하는 반면 C #은 다른 객체를 기대 합니다.obj.getClass().getType()isInstanceIsAssignableFromSystem.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)

MSDN의 Type.IsInstanceOfType 설명을 참조하십시오 .


답변