1. 델리게이트 (delegate )
- 사용자 정의형
- 대리자
- C, C++의 함수포인터와 동일한 기능
어떤 일을 대신 해주는 사람 이라고 생각하자.
예시)
// 매개변수로 string type의 값을받으며 반환은 하지 않는 함수를 대리하는 Log_Event라는 이름을 갖는자료형을 정의
public delegate void Log_Event(string msg);
// func라는 함수가 있다. string을 입력받으며 입력받은 값을 콘솔창에 출력하여 준다.
public void func( string msg )
{
Console.WriteLine("{ 0 }", msg);
}
// Log_Event형 log_msg라는 변수를 생성.
public Log_Event log_msg;
// log_msg가 func를 앞으로 대신하여 줄 것이다.
log_msg = func;
// func의 기능을 대신하여 준다. 따라서 입력값을 콘솔창에 출력해준다.
log_msg("text");
- -= 연산자를 통해 참조했던 함수를 더이상 참조하지 않겠다는 의미로 사용 할 수 있다.
- 델리게이트를 통하여 구현
- 하나의 이벤트는 여러개의 작업들이 추가 될 수 있어야 한다.
- 어떤 사건이 일어났을때 특정 함수나 작업을 수행 하는 것.
- 이벤트는 Delegate를 캡슐화 시킨것이라고 생각하자!!
사용 절차 )
1. 델리게이트 선언
2. 클래스 내에 선언한 델리게이트의 선언 앞에 event 한정자를 수식
3. 메소드 형식과 일치하는 이벤트 핸들러 작성
4. 인스턴스 생성 후 3번에서 작성한 이벤트 핸들러 등록
5. 이벤트 발생 -> 이벤트 핸들러 호출
3. 델리게이트 와 이벤트 차이
Delegate는 클래스 외부에서 임의로 직접 사용 가능
Event는 외부에서 직접 이벤트를 임의로 일으킬 수 없음.
'프로그래밍 > C#' 카테고리의 다른 글
WPF 동적으로 텍스트 박스(TextBox) 생성 하는 방법 (0) | 2019.03.25 |
---|---|
WPF DLL 생성 및 Mainwindow에서 ChildWindow로 창 전환 (0) | 2019.02.26 |
WPF 속성 창이 화면에 나타나지 않을 때 (0) | 2019.02.25 |
오래된 파일을 지우는 함수 작성 (0) | 2019.02.05 |
섀도잉과 하이딩 (0) | 2019.01.14 |