메서드 그룹 (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) 컴파일 오류
}
}
참고 자료
'유니티에서 게임개발을 추구하면 안되는걸까 > C#' 카테고리의 다른 글
[Unity, C#] 다른 c#파일의 class 호출 (0) | 2021.04.18 |
---|