C#

[C#][Unity] is as 캐스팅 연산자

자가라o 2021. 8. 12. 18:45

<개요>

is, as는 C#의 캐스팅 연산자로 객체를 캐스팅 할때 사용.

  • 기본적으로 상속관계의 클래스간 하향캐스팅을 할 때 사용된다.
  • 하향캐스팅은 명시적으로 이루어져야 하는데 실행시점에 실패 할 가능성이 있다.
  • is, as 연산자를 사용하면 런타임을 거치지않고도 성공유무를 확인 할 수있다.

 


 

<is 연산자>

캐스팅후 캐스팅 결과에 따라 bool값을 리턴한다.

(캐스팅이 가능하다면 true / 캐스팅이 불가능하면 false를 반환한다.)

값타입, 참조타입 모두 사용가능

class child{ ... }

void Test()
{
    int i = 0;
    if (i is child)
    {
    }
}

 

<as 연산자>

캐스팅이 가능하다면 캐스팅 결과를 반환하고 / 캐스팅이 불가능하면 null을 반환한다.

참조 타입끼리만 사용 가능하다.

 


<사용예>

public class parent
{ 
    // 부모클래스
}

public class child : parent
{ 
    // 부모클래스를 상속한 자식클래스
}

public class castingTest : MonoBehaviour
{
    void Test()
    {
        child c = new child();
        parent p = new parent();
        
        // as 연산자의 사용
        p = c as parent;
        
        // is 연산자의 사용
        if(c is parent)
        {
        	// ...
        }
    }
}