ved_Rony
article thumbnail

C#은 정적타이핑, 즉 데이터 타입을 미리 선언해줘서 컴퓨터의 부담을 덜어줄수 있다고 한다.

타입 불일치가 발생하더라도 컴파일러가 이를 확인해준다.

object타입의 인자를 취하는 경우도 있는데, 이때 클래스나 혹은 인터페이스로 형변환하여 사용한다.

 

이렇게, 형변환의 사용이유들이 있는데, 그렇다면, c#에서는 형변환을 어떻게 할까

크게 두가지가 있다. 캐스팅 is이다.

형변화을 할때 is를 사용하여 방어적인 코드, 쉽게 말해 null체크 같은 예외적인 상황을 대비 할수 있게 해준다.

캐스팅을 사용한다면, try-catch문으로 exception체크를 해줘야하는데, 가독성이 떨어진다.

반면, as를 사용할경우 형변환 실패시, null이 반환되므로 null체크만 해주면 되는데, 가독성 면에서 유리하다.

 

as 사용시 몇가지 유의할 점이 있는데,

지정한타입 본인이거나, 혹은 그타입을 상속 받고있어야한다.(본인 혹은 자식)

예) player: person -> var person = obj as player (or person)

그렇지 않다면, null을 반환한다. 또한, null을 받을수 없는 타입에 대해선 컴파일 할수 없다. 이때, var를 이용해 

nullable타입을 사용한다.

object o = Factory.GetValue();

var i = o as int?

if(i != null) {//funciton..}

캐스팅은 서로다른 숫자 타입에 한해, 다른 타입의 형변환이 가능하다.

 

profile

ved_Rony

@Rony_chan

검색 태그