함수 오버로딩

C#의 함수 오버로딩을 학습합니다. 같은 이름이지만 매개변수가 다른 여러 함수를 만드는 방법을 이해합니다.

오버로딩(overloading)이란?

같은 이름의 함수(function)를 여러 개 만들되, 매개변수(variable)(parameter)의 타입(type)이나 개수가 다르면 구분할 수 있습니다. 이를 함수(function) 오버로딩(Overloading)이라고 합니다.

// 매개변수가 2개인 경우
int MinusNumber(int a, int b)
{
    return a - b;
}

// 매개변수가 1개인 경우 (오버로딩)
int MinusNumber(int a)
{
    return a;
}

// 매개변수 타입이 다른 경우 (오버로딩)
float MinusNumber(float a, float b)
{
    return a - b;
}

사용 예시

void Start()
{
    Debug.Log(MinusNumber(97, 3));      // 94 (int, int)
    Debug.Log(MinusNumber(97));         // 97 (int)
    Debug.Log(MinusNumber(97.0f, 3.0f)); // 94.0 (float, float)
}

오버로딩(overloading)의 장점

  • 유연성: 같은 기능이지만 다른 타입(type)이나 개수의 값을 받을 수 있음
  • 편의성: 함수(function) 이름을 하나로 통일할 수 있어 기억하기 쉬움
  • 가독성: 코드가 더 깔끔하고 이해하기 쉬움

오버로딩(overloading) 규칙

  1. 함수(function) 이름은 같아야 함
  2. 매개변수(variable)(parameter)의 타입(type)이나 개수가 달라야 함
  3. 반환(return) 타입(type)만 다르면 오버로딩(overloading) 불가 (에러(error) 발생)
// ✅ 가능: 매개변수 개수가 다름
int Add(int a, int b) { return a + b; }
int Add(int a, int b, int c) { return a + b + c; }

// ✅ 가능: 매개변수 타입이 다름
int Add(int a, int b) { return a + b; }
float Add(float a, float b) { return a + b; }

// ❌ 불가능: 반환 타입만 다름 (에러!)
int Add(int a, int b) { return a + b; }
float Add(int a, int b) { return a + b; }  // 컴파일 에러!

← 목차로 돌아가기