IT

변수의 유형이 변수에 기록 유형과 일치하는지 확인하는 방법

lottoking 2020. 9. 13. 10:55
반응형

변수의 유형이 변수에 기록 유형과 일치하는지 확인하는 방법


User u = new User();
Type t = typeof(User);

u is User -> returns true

u is t -> compilation error

이런 식으로 어떤 변수가 어떤 유형인지 어떻게 테스트합니까?


다른 답변에는 모두 누락이 포함되어 있습니다.

is연산자가 없는 피연산자의 실행 유형이 확인되어 정확하게 지정된 타입; 런타임 유형 오히려 주어진 유형 과 호환되는지 확인 합니다.

class Animal {}
class Tiger : Animal {}
...
object x = new Tiger();
bool b1 = x is Tiger; // true
bool b2 = x is Animal; // true also! Every tiger is an animal.

그러나 리플렉션을 사용 하여 유형 ID 를 확인하는 [해석] 호환성이 아닌 ID를 확인합니다.

bool b3 = x.GetType() == typeof(Tiger); // true
bool b4 = x.GetType() == typeof(Animal); // false! even though x is an animal

그것이 원하는 것이 아니라면 IsAssignableFrom을 원할 것입니다.

bool b5 = typeof(Tiger).IsAssignableFrom(x.GetType()); // true
bool b6 = typeof(Animal).IsAssignableFrom(x.GetType()); // true! A variable of type Animal may be assigned a Tiger.

GetType()기본 object유형 에 정의되어 있으므로 모든 단일 프레임 워크 유형에 존재 합니다. 자체 유형 자체에 관계없이이를 사용하여 기본Type

따라서 다음과 같이하면됩니다.

u.GetType() == t

인스턴스의 유형이 클래스의 유형과 같은지 확인해야합니다. 인스턴스 유형을 가져 오려면 다음 메소드 를 사용하십시오 .GetType()

 u.GetType().Equals(t);

또는

 u.GetType.Equals(typeof(User));

해야합니다. 원하는 경우 비교를 위해 '=='를 사용할 수 있습니다.


객체가 작성하는 대신 주어진 유형 변수와 호환 확인하기 위해

u is t

너는 써야한다

typeof(t).IsInstanceOfType(u)

참고 URL : https://stackoverflow.com/questions/10415276/how-to-check-if-variables-type-matches-type-stored-in-a-variable

반응형