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..}
캐스팅은 서로다른 숫자 타입에 한해, 다른 타입의 형변환이 가능하다.
'Programming > C#' 카테고리의 다른 글
Effective C# - 제네릭의 활용) 런타임에 타입을 확인하여 최적의 알고리즘을 사용하자. (0) | 2022.09.11 |
---|---|
Effective C#-제네릭 활용: 필요한 제약 조건만 설정 +) 제네릭? (2) | 2022.09.02 |
C# - 프로퍼티(Property) (0) | 2022.07.24 |
C#- 비동기 프로그래밍(2) with 예제 (0) | 2022.06.12 |
C# - 비동기 프로그래밍_asynchronous programming (0) | 2022.05.28 |