반응형
변수의 유형이 변수에 기록 유형과 일치하는지 확인하는 방법
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)
반응형
'IT' 카테고리의 다른 글
루비 온 레일즈의 여러 열에 대한 보안 (0) | 2020.09.13 |
---|---|
Bash의 HMAC-SHA1 (0) | 2020.09.13 |
PostgreSQL은 모든 콘텐츠를 삭제합니다. (0) | 2020.09.13 |
IE11 문서 모드의 링크는 IE7입니다. (0) | 2020.09.13 |
DataGridView에서 현재 선택된 행의 등급 (0) | 2020.09.13 |