본문 바로가기
유니티 공부/C# 문법

C# 문법 - 클래스 형식 변환

by 코딩하는 돼징 2023. 4. 12.
반응형
class Pig
{
	public int weight;
	public string name;
}
class PinkPig : Pig
{
	public int age;
}
class BluePig : Pig
{
	public int age;
}

1. 자식 클래스에서 부모 클래스로 변환하는 경우 

PinkPig -> Pig

PinkPig pinkpig = new PinkPig();
Pig pinkpig2 = pinkpig;

2. 부모 클래스에서 자식클래스로 변환하는 경우

확신이 있어서 변환해주었지만 에러가 생기면 프로그램이 뻗으므로 아래와 같은 방법은 추천하지 않는다.

PinkPig pinkpig = new PinkPig();
PinkPig pinkPig1 = (PinkPig)pinkpig;

개체는 다형성이기 때문에 기본 클래스 형식에서 파생된 자식클래스가 존재한다. 그러므로 인스턴스 멤버에 액새스할려면 값을 자식클래스에서 다시 캐스팅해야 하는 경우가 생긴다.

static void Eat(Pig pig)
{
	// 함수 안에서 자식 클래스를 캐스팅하고 싶은 경우
}

값이 특정 자식클래스인지 테스트하기 위해 is 및 as 연산자를 사용한다.

3. is

반환 값이 true / false

bool isBluePig = (pig is BluePig);
if(isBluePig)
{
	BluePig bluePig = (BluePig)pig;
	bluePig.age = 10;
	Console.WriteLine(bluePig.age);
}

4. as

반환 값이 null / !null

Pinkpig pinkpig = (pig as PinkPig);
if(pinkpig != null)
{
 	pinkpig = (PinkPig)pig;
	pinkpig.age = 20;
	Console.WriteLine(pinkpig.age);
}

 

 

 

 

본 게시글은 MMORPG Part1을 수강하고 정리한 글입니다.

https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1/dashboard

반응형

댓글