메서드 그룹 (Method Group)

메서드 집합의 이름. 여러 개의 오버로드를 모두 포함한 것. 예를 들어 ToString 메서드는 `ToString()`, `ToString(string formant)` 등 여러 오버로드를 가지고 있는데, 여기서 ToString 그 자체를 메서드 그룹이라고 한다.

 

 

메서드 시그니처 (Method Signature)

메서드의 이름과 매개변수 타입 정보를  포함 하는 것을 의미한다. 

void PrintMessage(string message);   // 시그니처: PrintMessage(string)
void PrintNumber(int number);        // 시그니처: PrintNumber(int)

메서드 시그니처는 오버로딩을 구분하는 기준이 된다. 이 상황에서는 반환 타입은 메서드 시그니처로 고려되지 않는다.

 

그러나 델리게이트와 델리게이트가 가리키는 메서드 간의 호환성을 결정할 때는 반환 타입도 시그니처의 일부로 고려된다.

delegate int MyDelegate(); // 반환 타입이 `int`

class Program
{
    static int GetNumber() => 42;  // (O) 호환됨 (int 반환)
    static void PrintNumber() => Console.WriteLine(42); // (X) 델리게이트와 호환되지 않음 (void 반환)

    static void Main()
    {
        MyDelegate d = GetNumber; // (O) 가능
        // MyDelegate d2 = PrintNumber; // (X) 컴파일 오류
    }
}

 

 

참고 자료