본문 바로가기
게임개발/Effective C#

[Effective C#] 3. is, as vs cast (보충 필요)

by 개발도사(진) 2023. 11. 11.

형 변환이 필요할 시, is/as를 사용하는 것이 더 낫다.

 

as 연산자를 이용한 형 변환

as 연산자를 이용한 형 변환 방법은 다음과 같다.

TypeToCasted castedObject = object as TypeToCasted;

위 코드는 object를 TypeToCasted 형태로 형 변환시키고, 만일 형 변환을 정상적으로 수행하지 못하거나 object가 null인 경우 null 값을 반환한다. 따라서 위와 같은 방식으로 형 변환을 수행하면

TypeToCasted castedObject = object as TypeToCasted;
if(type!=null){...}
else{//report error}

위와 같이 간단한 검사만으로 안전한 코드를 작성할 수 있다. 만일 (TypeToCast)object 를 통해 형변환을 시도하였다면, null인 경우와 더불어 InvalidCastException이 발생하는 경우도 따로 확인해야 했을 것이다.

 

즉, 형 변환을 요구할 때 as 연산자를 이용하면 null만 확인하면 안전한 코드를 작성할 수 있다. 

 

단, as를 이용한 형 변환은 사용자 정의 형변환에 사용할 수 없다. ..고 한다. 내가 사실 사용자 정의 형 변환을 아직 잘 모른다.. 이 부분은 나중에 돌아와서 보충하도록 하겠다.

 

as 연산자를 이용한 형 변환이 불가능한 경우

nullable type이 아닌 경우 as를 이용하여 형 변환할 수 없다.