Posted in: C# 언어

Overload | 유니티 C# 오버로드 문법 간단한 설명 & 예제

이 오버로드 말하는 거 아닙니다

유니티에서의 오버로드(overlord)는 똑같은 이름의 함수일지라도 받아오는 매게변수에 따라 다르게 동작하는 함수를 말합니다.

굳이 예를 들자면 같은 주제와 주인공으로 이야기를 쓰는 데 작가가 다른 경우입니다. 작가 자신의 풀이법으로 글을 쓰기 때문에 내용은 달라지겠죠.

간단한 예제


void Start()
{
    Debug.Log(Sum(10,5));
}

public int Sum(int a, int b)
{
    return a + b;
}

두 정수를 받아서 값을 더하는 Sum 함수가 있습니다. 해당 스크립트를 실행시키면 15를 출력하죠.

void Start()
{
    Debug.Log(Sum(10, 5));
    
    Debug.Log(Sum3(10, 20, 30));
}

public int Sum(int a, int b)
{
    return a + b;
}

public int Sum3(int a, int b, int c)
{
    return a + b + c;
}

만약에 3개의 매개변수를 받는데 모두 더하는 기능이라면 굳이 Sum3 이라는 함수를 만들어야 될까요? 이미 Sum 함수에서 모두 더하는 기능이 있잖아요?

void Start()
{
    Debug.Log(Sum(10, 5));
    
    Debug.Log(Sum(10, 20, 30));
}

public int Sum(int a, int b)
{
    return a + b;
}

public int Sum(int a, int b, int c)
{
    return a + b + c;
}

이럴 때 함수 이름은 똑같지만 매개변수를 다르게 설정하면 똑같은 이름의 함수를 사용할 수 있습니다. 받아오는 매개변수에 따라 그에 해당하는 함수가 실행되는 것이죠.

이것을 오버로드(Overlord)라고 합니다. 비슷한 기능의 함수를 만들기 위해서 불필요하게 코드가 복잡해질 필요 없이 똑같은 이름의 함수를 사용하여 함수를 사용하는데 편의성을 높일 수 있습니다.

void Start()
{
    Debug.Log(Sum(10, 5));
    
    Debug.Log(Sum(10, 20, 30));
    
    Debug.Log(Sum(1.5f, 1.7f));
}

public int Sum(int a, int b)
{
    return a + b;
}

public int Sum(int a, int b, int c)
{
    return a + b + c;
}

public float Sum(float a, float b)
{
    return a, b;
}

데이터형이 다른 함수도 만들 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다