[c#] C# 메소드 시그니처와 오버로딩

C#에서 메소드 시그니처는 메소드의 이름과 매개변수 유형 및 순서를 말합니다. 오버로딩은 같은 이름을 가진 메소드를 여러 개 정의하는 것을 말합니다. 이때 메소드 시그니처가 달라야 합니다. 이번에는 C#에서 메소드 시그니처와 오버로딩에 대해 알아보겠습니다.

메소드 시그니처

메소드 시그니처는 메소드의 이름과 매개변수 유형과 순서를 결정합니다. 반환 유형이나 매개변수 이름, 메소드 내의 구현은 시그니처에 영향을 주지 않습니다. 예를 들어, 다음과 같이 두 개의 메소드는 시그니처가 다릅니다.

public void PrintName(string name)
{
    Console.WriteLine(name);
}

public void PrintName(int id)
{
    Console.WriteLine(id);
}

첫 번째 메소드는 문자열을 매개변수로 받아들이고, 두 번째 메소드는 정수를 매개변수로 받아들입니다. 이 두 메소드는 시그니처가 다르므로 오버로딩이 가능합니다.

메소드 오버로딩

메소드 오버로딩을 사용하여 동일한 이름을 가진 여러 메소드를 정의할 수 있습니다. 메소드 시그니처가 각기 다르기 때문에 컴파일러는 어떤 메소드가 호출되는지 정확히 식별할 수 있습니다. 예를 들어,

public void PrintName(string name)
{
    Console.WriteLine(name);
}

public void PrintName(int id)
{
    Console.WriteLine(id);
}

위의 예제에서는 두 개의 PrintName 메소드가 있습니다. 첫 번째는 문자열을, 두 번째는 정수를 출력합니다. 호출 시 인수의 데이터 형식에 따라 적절한 메소드가 선택됩니다.

메소드 시그니처는 매개변수의 유형, 순서, 개수에 의해 결정되므로 매개변수 리스트가 다른 경우에만 오버로딩이 가능합니다.

결론

C#에서 메소드의 시그니처와 오버로딩은 메소드 이름과 매개변수 유형 및 순서에 의해 결정됩니다. 이를 통해 동일한 이름을 가진 다양한 매개변수를 받는 메소드를 구현할 수 있습니다.

참조: Microsoft Docs - 메소드 오버로딩 (C# 프로그래밍 가이드)