델리게이트란?
함수 대행자이다. 어떤 함수들을 델리게이트에 추가 해놓는다면, 그함수들을 실행시켜준다.
델리게이트 선언 -> 델리게이트 추가+=들어갈 함수 -> 델리게이트 실행
이런한 델리게이트로 클래스간의 커플링을 방지 할수 있다
이벤트 사용하지 않는 경우
A라는 함수를 실행시키면 B 함수를 실행 시킬려고 한다. 그렇다면, A를 가지고 있는 클래스는 B에 대해 알고 있어야한다.
즉, A의 클래스에 public X x;으로 선언후,
x.B(필요한 매개변수)식으로 사용해야한다. 이벤트를 사용하면 이런 경우를 피할수 있다.
이벤트를 사용
선언
public delegate void [델리게이트 이름](메소드에 들어갈 매개변수)
public event [델리게이트][이벤트 이름]
메소드 추가
[이벤트이름](publisher) += [추가하려는 메소드](subscriber)
이때 메소드에서는 타입과 매개변수를 일치시켜야한다.
사용
델리게이트(넣고 싶은 매개변수)
이를 예제로 알아보자.
싱글턴으로 바꿔서 사용해보자
잘되는 것을 확인 할수있다
event 키워드 사용이유: 델리게이트 실행함수는 publisher에 있어야한다. 외부에서 사용되는 경우를 막기위해 event를 사용한다고 한다.(event키워드가 있든 없든 상단의 예제는 에러없이 잘돌아간다.)
그리고 선언하거나 할때, 꼭 초기화하도록 하자.-> 메모리낭비를 줄이기 위해
'Programming > C#' 카테고리의 다른 글
Effective C# - 캐스트보다 is, as를 사용하자 (0) | 2022.08.29 |
---|---|
C# - 프로퍼티(Property) (0) | 2022.07.24 |
C#- 비동기 프로그래밍(2) with 예제 (0) | 2022.06.12 |
C# - 비동기 프로그래밍_asynchronous programming (0) | 2022.05.28 |
C# - 구조체(struct) (0) | 2022.05.23 |