[C#] Class의 형변환 (Casting)

자몽이·2025년 10월 30일

C# 문법

목록 보기
6/12
post-thumbnail

형변환(Casting)에 대해 알아보자.


형식 변환 (Casting) 이란?

형식 변환은 데이터 타입을 다른 타입을 바꾸는 것을 의미한다.
C#에선 크게 두 가지가 있다.



1. 값 형식 변환 (value Type Casting) -> int, float 같은 기본형 변환


2. 참조 형식 변환 (Reference Type Casting) -> 클래스, 인터페이스간의 변환



Unity에서의 형변환


✅ 1. GameObject -> Component 변환

GameObject obj = GameObject.Find("Player");
PlayerController controller = obj.GetComponent<PlayerController>();

  • GetComponent가 반환하는 건 Component 타입이다.
  • PlayerController 타입으로 형변환 하는 것이다.


✅ 2. 부모 클래스 -> 자식 클래스 변환 (다운캐스팅)

Enemy enemy = new BossEnemy(); // 업캐스팅 (자동)
BossEnemy boss = (BossEnemy)enemy; // 다운캐스팅(명시적)

  • 업캐스팅은 자동으로 이루어지지만 다운캐스팅은 명시적 캐스팅이 필요하다.
  • 잘못된 타입으로 캐스팅하면 런타임 오류가 발생하기 때문에 사용에 주의가 필요하다.


✅ 3. as 키워드

⭐as는 예외를 던지지 않기 때문에 안전하고 형변환을 시도할 때 사용된다. 실패하면 null을 반환한다.⭐

Component c = GetComponent("PlayerController")
PlayerController p = c as PlayerController;

if (p != null)
	p.Move();


✅ 4. is 키워드

형을 체크할 때 사용되며 반환값은 true/false 이다.

요즘 C# 버전에서는 아래처럼 더 간단히 사용 가능 하다.

if (obj is PlayerController p)
	p.Move();




Unity에서 자주 보이지 않던 이유

Unity에서 형변환은 눈에 보이지 않지만 항상 일어나고 있다.
특히 GetComponent, 상속 구조, 스크립트 참조 등에서 참조형 캐스팅이 자주 사용된다.



profile
개발자가 되는 그 날 까지

0개의 댓글