안녕하세요 삽잡이입니다.
이번 시간에는 형변환 검사 키워드에 대해서 알아보려고 합니다.
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'가 있다는 소리이지요...
이상 삽잡이였습니다!
'삽질의 현장 > - .NET' 카테고리의 다른 글
#034_닷넷(.NET)_.Net Framework 기본 - 상속 구조를 끊는 new 키워드 (0) | 2015.10.27 |
---|---|
[삽잡이::C#] base & this (0) | 2015.10.27 |
#032_닷넷(.NET)_.Net Framework 기본 - Boxing & Unboxing (0) | 2015.10.27 |
#031_닷넷(.NET)_.Net Framework 기본 - Up Cast & Down Cast (0) | 2015.10.27 |
#030_닷넷(.NET)_.Net Framework 기본 - 생성자 주의 사항 (0) | 2015.10.27 |