[c#] Java의 isInstance ()에 해당하는 C #은 무엇입니까?
내가 알고있는 is
과 as
에 대한 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()
isInstance
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)
MSDN의 Type.IsInstanceOfType 설명을 참조하십시오 .