2017-11-24 8 views
0

두 개체의 유형이 동일한 지 알아야합니다. 나는VIsual Basic에서 두 객체의 유형을 비교하는 방법은 무엇입니까?

if TypeOf X = TypeOf Y 

if TypeOf X is TypeOf Y 

을 시도했지만이 중 어느 것도 유효 VB

있는 한 줄에이 일을하는 방법이 있나요, 아니면 그냥 코드를 확인해야 할 것 가능한 각 유형?

두 객체가 서로 정확히 동일한 유형 있는지 확인해야하는 경우, 코멘트에 한스에 의해 언급 한 바와 같이
if (TypeOf X is Type1 AndAlso TypeOf Y is Type1) 
OrElse (TypeOf X is Type2 AndAlso TypeOf Y is Type2) 
... 
+3

가능 [객체가 특정 유형인지 확인하는 방법]의 복제본 (https://stackoverflow.com/questions/6580044/how-to-check-if-an-object-is-a-aust- type) –

+1

x. GetType() = y.GetType(). 또는 x.GetType(). IsAssignableFrom (y.GetType()). 또는 TryCast (x, y.GetType()). 당신이 왜 이것을 필요로하는지 우리에게 말하지 않을 때 실제로 원하는 것을 짐작하기는 어렵습니다. –

+0

내 생각에, 다른 질문은 두 개의 다른 객체가 같은 유형인지 확인하기보다는 객체가 특정 알려진 유형인지 확인하는 방법이므로 중복되지 않습니다. 유사하고 도움이되지만 완전히 동일하지는 않습니다. –

답변

1

, 그렇게 같이 수행 할 수

If x.GetType() = y.GetType() Then 

하지만, 그게 네가 필요로하는 것이 아닐 수도있다. 그 중 하나가 다른 유형으로 캐스트 될 수 있는지 알아야하는 경우 (x는 파생 클래스의 인스턴스이고 y는 기본 클래스의 인스턴스입니다) 다음과 같이 할 수 있습니다.

If x.GetType().IsAssignableFrom(y.GetType()) Then 
+0

감사합니다 한스와 스티븐. 그게 내 질문에 완전히 대답했다. 내 객체가 속한 상속 트리를 확인하려면 Hans의 솔루션입니다. 하지만 Steven의 답변도 나중에 유용 할 것입니다. GetType에 대해 잊어 버렸거나 잊어 버렸습니다. – Peter