대리자는 매서드에 대한 참조를 나타내는 형식이자 매서드이다!
대리자가 인수가 되서 인스턴스가 되면 매서드를 호출
연결할 매서드의 반환 타입과 매개 변수가 같으면 연결할 수 있다.
- 사용처
1) 특정 기능이 실행(반환)되었을 때, 알람
ex) 버튼이 눌렸다, 이동이 완료되었다, 죽었다, 변신이 완료되었다, 구매했다, 생성됐다~ 등
> 프로그램적으로는 언제 기능이 사용될지 모르니 알람을 준다는데 사용자 입장에서는 그게 시작이라는 점이 달라서 신선했다. 내가 누르면 ~가 된다가 아니라 사용자가 ~를 누르면~ 이라는 생각의 차이가 있다.
2) ** 콜백: 대리자에 연결된 매서드를 인수로 넘겨준다.
- Main
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
public class Program
{
static void Main(string[] args)
{
new App();
}
}
}
- App
>> 순서 기억하기
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
public class App
{
////////////// 대리자 형식 사용 순서 ////////////////////////////////
//1. 대리자 형식 정의 : delegate
// 반환 타입 연결할 매서드의 매개 변수와 같아야 한다.
//2. 대리자 형식의 변수 정의 or 대리자 형식 매개 변수 정의(=콜백한다!)
//3. 대리자에 붙여 사용할 매서드 만들기
//4. 대리자의 인스턴스화(대리자 객체(인스턴스)를 생성하고 매서드에 연결)
//5. 대리자 호출
//////////////////////////////////////////////////////////////////
//1. 대리자 형식 정의
delegate void Callback();
// 반환 타입(void) 연결할 매서드의 매개 변수와 같아야 한다.
//2. 대리자 형식의 변수 정의 or 대리자 형식 매개 변수 정의(=콜백한다!)
Callback callback;
/////////생성자/////
public App()
{
//4. 대리자의 인스턴스화(대리자 객체(인스턴스)를 생성하고 매서드에 연결함
callback = SayHello; // 대입 연산자= 오른쪽의 값의 첫 글자가 대문자면 100% 매서드다.
// 실행할 매서드를 callback에 넣어서 호출할 거야~ 5번에서
//5. 대리자 호출 (연결된 메서드를 호출)
callback();
}
//3. 대리자에 붙여 사용할 매서드 만들기
void SayHello()
{
//기능구현
Console.WriteLine("Hello World!");
}
}
}
- 출력

'정리' 카테고리의 다른 글
| Text(legacy)가 없습니다. (1) | 2024.08.20 |
|---|---|
| ★json★ 파일 적용 및 확인하기2 (0) | 2024.08.14 |
| 엑셀에 입력한 data를 ★json★ 파일로 변환하는 법1 (2) | 2024.08.14 |
| 리스트 작성법 (0) | 2024.08.13 |
| 배열 작성법 (0) | 2024.08.13 |