반응형
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을 수강하고 정리한 글입니다.
반응형
'유니티 공부 > C# 문법' 카테고리의 다른 글
C# 문법 - overloading(오버로딩) vs overriding(오버라이딩) (0) | 2023.04.12 |
---|---|
C# 문법 - 다형성(virtual, override) (0) | 2023.04.12 |
C# 문법 - 은닉성(public, protected, private) (0) | 2023.04.12 |
C# 문법 - 상속성 (0) | 2023.04.11 |
C# 문법 - static (0) | 2023.04.11 |
댓글