특정 매개 변수 목록 및 반환 형식이 있는 메서드에 대한 참조를 나타내는 형식을 대리자라고 합니다. 대리자를 인스턴스화할 때 대리자 인스턴스를 호환되는 서명 및 반환 형식이 있는 메서드와 연결할 수 있습니다. 대리자 인스턴스를 통해 메서드를 호출할 수 있습니다.
대리자는 메서드를 다른 메서드에 인수로 전달하는 데 사용됩니다. 이벤트 처리기는 기본적으로 대리자를 통해 호출하는 메서드입니다. 사용자 지정 메서드를 만들 때 Windows 컨트롤과 같은 클래스는 특정 이벤트가 발생할 때 메서드를 호출할 수 있습니다.
다음 예제에서는 대리자 선언을 보여줍니다.
public delegate int PerformCalculation(int x, int y);
대리자 형식과 일치하는 액세스 가능한 클래스 또는 구조체의 메서드를 대리자에게 할당할 수 있습니다. 메서드는 정적 또는 인스턴스 메서드일 수 있습니다. 유연성을 통해 프로그래밍 방식으로 메서드 호출을 변경하거나 새 코드를 기존 클래스에 연결할 수 있습니다.
메모
메서드 오버로드의 컨텍스트에서 메서드의 서명에는 반환 값이 포함되지 않습니다. 그러나 대리자의 컨텍스트에서 서명에는 반환 값이 포함됩니다. 즉, 메서드는 대리자가 선언한 반환 형식과 호환되는 반환 형식이 있어야 합니다.
메서드를 매개 변수로 참조하는 기능을 사용하면 대리자가 콜백 메서드를 정의하는 데 이상적입니다. 애플리케이션에서 두 개체를 비교하는 메서드를 작성할 수 있습니다. 그런 다음 정렬 알고리즘에 대한 대리자에서 메서드를 사용할 수 있습니다. 비교 코드는 라이브러리와 별개이므로 정렬 메서드가 더 일반적일 수 있습니다.
함수 포인터는 유사한 시나리오에서 호출 규칙을 보다 더 세밀하게 제어할 수 있도록 지원합니다. 대리자 형식에 추가된 가상 메서드를 사용하여 대리자와 연결된 코드를 호출합니다. 함수 포인터를 사용하는 경우 다른 규칙을 지정할 수 있습니다.
대리자 특성 살펴보기
대리자의 특징은 다음과 같습니다.
- 대리자를 사용하면 메서드를 매개 변수로 전달할 수 있습니다.
- 대리자를 사용하여 콜백 메서드를 정의할 수 있습니다.
- 대리자는 단일 이벤트에서 여러 메서드를 호출하는 등 함께 연결할 수 있습니다.
- 메서드는 대리자 형식과 정확히 일치할 필요가 없습니다. 자세한 내용은 대리자 분산 사용참조하세요.
- 람다 식은 인라인 코드 블록을 작성하는 보다 간결한 방법입니다. 특정 컨텍스트에서 람다 식은 대리자 형식으로 컴파일됩니다. 람다 식에 대한 자세한 내용은 람다 식참조하세요.
관련 문서 검토
대리자에 대한 자세한 내용은 다음 문서를 참조하세요.
- 대리자 사용
- 명명된 메서드와 익명 메서드를 사용하는 대리자
- 대리자에서의 분산 사용
- 대리자(멀티캐스트 대리자)를 결합하는 방법
- 대리자 선언, 인스턴스화 및 사용하는 방법
C# 언어 사양에 액세스
언어 사양은 C# 구문 및 사용의 최종 소스입니다. 자세한 내용은 C# 언어 사양의 대리자을 참조하세요.
관련 링크
.NET