[C#]_유니티_일반화(Generic)_0616

윾띵진·2022년 6월 16일
0

게임개발

목록 보기
5/7

1. 일반화(Generic)

일반화(Generic)는 공통적으로 사용되는 부분을 추상화 한 것을 의미한다.

//1
void PrintInt(int value)
{
	Debug.Log(value);
}
//2
void PrintFloat(float value)
{
	Debug.Log(value);
}

두 함수는 데이터타입을 제외하고 모두 동일한 기능을 가진다.

 void PrintValue<T>(T value)
    {
        Debug.Log(value);
    }

이때 데이터타입을 뭉퉁그려 T로 일반화하여 사용한다.

2. 일반화(Generic)를 사용할 때 주의할 점

 void Sum<T>(T valueA, T valueB)
    {
        return valueA + valueB;
        //오류가 뜨는 이유 : +연산자를 사용할 수 있는 데이터 타입인지 확인 할 수 없음
        //물론 다이나믹을 사용하면 가능함.
    }  

해당 코드는 오류를 배출할 것이다.
오류가 뜨는 이유는 +연산자를 사용할 수 있는 데이터 타입인지 확인 할 수 없기 때문이다.

3. where T :

 void DestrorComponent<T>(T value) where T : Component
    {                               //where은 T에 대한 정보를 알려준다.
        Destroy(value);
        //where이 없다면 <T>가 컴포넌트 인지 알 수 없음.
    }
    
 public static void DestroyComponent<T>(this T value) where T : Component
    {
        // Component 상속받는 자식들을 포함한다. ex) Renderer, Rigidbody 등
        // ----- //
        Debug.Log("컴포넌트 제거");
    }

굳이 where을 사용하여 데이터타입을 특정해야하는 이유는 무엇일까?
확장메서드를 좀더 용이하게 사용하기 위해서다.

profile
Sprezzatura

0개의 댓글