개발공부/C#

[Effective C#] 아이템 3: cast보다는 is, as가 좋다.

개발자 찐빵이 2021. 11. 20. 21:41
728x90

C#에서 형변환을 수행하는 방법

  • as 연산자를 사용하기
  • cast 연산자 사용하기

cast 연산자

피연산자 앞에 괄호로 변경할 자료형을 넣어서 자료의 형태를 변환해주는 연산자.

int number = 10;
(string)number; //int 형을 cast를 활용해 string으로 변환한다.

is 연산자

변환의 성공 유무를 확인할 수 있는 연산자.
변환이 가능하면 true, 불가능하면 false를 리턴한다.

if(number is int num) //is 연산자는 주로 조건을 확인할 때 사용한다.
{
	num = ... //is 연산자가 true이면 number를 num으로 변환하여 사용할 수 있다.
}

as 연산자

객체의 타입을 변환할 때 사용하는 연산자.
변환에 성공하면 변환 결과를 리턴하고, 실패하면 null 값을 리턴한다.

var age = number as int; //이 경우 형변환에 실패하면 age에는 null값이 들어간다.

형변환에 as 연산자를 추천하는 이유

1. 형변환시 as를 사용하면 코드의 길이가 짧아지고 가독성이 좋아진다.

cast의 경우 try, catch 구문을 사용해서 예외 처리를 해야 하지만, as는 사용하지 않아도 된다.

2. cast 보다 as가 빠르다.

사용자가 정의한 형변환 연산자를 고려하지 않기 때문에 더 빠르다.

3. 동일한 결과를 반환한다. (일관적이다.)

어떤 타입의 변수를 받던지 항상 동일한 결과를 반환한다.

as를 사용할 수 없는 경우

1. value 타입에 대한 형변환을 수행할 경우
이 때는 is와 혼합해서 cast를 사용해야 한다.

2. foreach 구문을 사용할 경우
value와 reference 타입 둘 다 형 변환을 해야 하기 때문에 내부적으로 cast를 사용한다.

반응형