[c#] C# 오버로딩 규칙

C#에서는 메서드 오버로딩을 지원하여 동일한 이름의 메서드를 여러 개 정의할 수 있습니다. 메서드 오버로딩은 메서드 시그니처에 따라 구별됩니다. 메서드 시그니처는 메서드의 이름과 매개변수 목록으로 정의되며, 반환 형식은 시그니처에 포함되지 않습니다.

오버로딩 규칙

  1. 메서드 이름이 같아야 합니다. 매개변수의 개수 또는 형식이 달라야 합니다.

  2. 반환 형식만 다른 오버로딩은 허용되지 않습니다. 메서드 호출 시 반환 형식으로 메서드를 구별할 수 없기 때문에, 반환 형식만 다른 오버로딩은 컴파일 에러가 발생합니다.

  3. ref 및 out 키워드로만 다른 매개변수를 구분할 수 있습니다. refout 키워드의 사용 여부는 매개변수의 시그니처에 영향을 줍니다.

// 예제
public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public double Add(double a, double b)
    {
        return a + b;
    }
}

위의 예제에서는 Add 메서드를 정수형 매개변수로 오버로딩한 메서드와 실수형 매개변수로 오버로딩한 메서드로 구현하였습니다.

C#에서는 메서드 오버로딩을 통해 동일한 이름의 메서드로 다양한 시그니처를 가질 수 있으며, 유연하게 사용할 수 있는 장점이 있습니다.

참고 자료