삽질의 현장/- .NET

#033_닷넷(.NET)_.Net Framework 기본 -형식 변환 검사 키워드(is & as)

shovelman 2015. 10. 27. 20:05


안녕하세요 삽잡이입니다.


이번 시간에는 형변환 검사 키워드에 대해서 알아보려고 합니다.


C#에서는 형식 변환과 관련된 키워드로써 'is', 'as' 키워드를 제공해줍니다.


만약, 



이와 같은 코드가 있다고 해봅시다.

그런데 'as' 키워드를 사용해서 이처럼 바꿀 수 있습니다.



as 키워드를 사용해서 형식 변환을 해줄 수 있다 이겁니다.

참고로 참조 형식은 안됩니다.

이 as 키워드는 참조를 반환하거나, NULL을 반환하거나 합니다.



이와 같은 구조를 가진 클래스들이 있다고 해보겠습니다.



oa와 ab가 같다고 해보겠습니다.

oa는 ob를 가리킬 수 있지 않습니까? 즉, 자동 캐스팅이 가능하다는 소리입니다.


그런데 

'B ob2 = oa;'

이와 같이 자식 타입으로 캐스팅이 가능할까요?

형식이 되지 않지요... 따라서 다운 케스팅을 써야합니다.


그래서 'B ob2 = (B)oa;' 라고 할 수 있고 

이를 'as' 키워드를 사용해서 'B ob2 = oa as B;'와 같이 구현할 수 있다 이겁니다.


이때 만약, 형식 변환이 되면 변환된 참조를,

참조가 되지 않는다면 NULL을 반환하게 됩니다.



그리고 또 다른 형식 변환 연산자인 'is'를 알아보도록 하겠습니다.

이 키워드는 참 거짓... 즉, 판단하는 역할을 합니다.



이와 같이 oa에 oc는 마찬가지로 가리킬 수 있습니다.

즉, 자동 캐스팅이 가능하다는 것입니다.


그런데 위의 코드를 실행해보면 거짓이기에 조건문의 코드가 실행되지 않습니다.

oa는 부모 참조자로써 자식 참조자인 oc가 가리키는 객체를 참조할 수 있습니다.


그런데 자식 참조자C를 가리키는 oa는 B로 형식 변환을 할 수 없지요...

왜냐하면 B와 C는 자식일 뿐 다르기 때문입니다.


이처럼 서로 호환되는 타입인지에 대해서 판단할 수 있는 기능을 'is'가 제공해줍니다.

즉, 형변환 검사를 해주는 키워드라는 소리입니다.


그리고 이 형변환 검사를 해주는 키워드는 'is'와 'as'가 있다는 소리이지요...


이상 삽잡이였습니다!