정수값을 변수에 담고 싶을때는
정수를 담고싶을때는 int로 선언하면됩니다.
![[c#] 델리게이트(delegate) 개념 | += , -= [c#] 델리게이트(delegate) 개념 | += , -=](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
문자를 담고싶을때는 string로 선언하면됩니다.
![[c#] 델리게이트(delegate) 개념 | += , -= [c#] 델리게이트(delegate) 개념 | += , -=](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
함수(or 메소드)를 변수에 담고 싶을땐 어떻게 할까요?
이때 사용하는것이 대리자(delegate)입니다.
이 글과 읽으면 좋은글
1. 델리게이트 선언방법
1) 제일 앞에 delegate 명시하고, 리턴값 타입, 매개변수 구성을 맞춰서 정의를 합니다.
아래 그림 처럼 변수에 넣고 싶은 메소드인 Print의 구성요소를 맞춰서 delegate를 정의하는것을 알 수 있습니다.
![[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법 [c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2) 메소드를 가진 클래스를 먼저 객체화 하고, 메소드를 델리게이트의 인자로 넣는 형태로 정의를 합니다.
![[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법 [c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
델리게이트가 마치 변수처럼 사용되는걸 알 수 있습니다.
Output:
![[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법 [c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이 방법 외에도 c# 2.0이상에서 사용하는 방법으로 아래와 같이 사용할 수 있습니다.
인자로 넣는 것이 아니라 할당 하는 식으로 정의를 합니다.
![[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법 [c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용
델리게이트를 이용하면 변수에 함수 1개만 담는게 아니라 여러개를 담을 수도 있습니다.
아래와 같이 대리자(델리게이트)를 이용할 준비를 합니다.(return 타입, 매개변수 구성 맞추기)
![[c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용 [c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
델리게이트에 PrintA, PrintB를 함께 담아보겠습니다.
![[c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용 [c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
위와 같이 기존처럼 델리게이트를 이용하되, 추가하고싶은 메소드(여기선 Test.PrintB)는 += 를 이용해서 추가 합니다.
Output:
![[c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용 [c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용](https://blog.kakaocdn.net/dn/CCab4/btrBMGEpNti/dwL8jokTKYStEvoQkSsd9k/img.png)
하나의 델리게이트를 실행했는데 두개의 메소드가 실행된걸 알 수 있습니다.
'c#' 카테고리의 다른 글
[c#] private set 사용 이유?(프러퍼티) (0) | 2022.05.11 |
---|---|
[c#] 프로퍼티(property)란? - 사용 이유/ 사용법 (0) | 2022.05.11 |
[c# 기초] 코드 동작 시간 측정 (with Stopwatch) (0) | 2022.05.09 |
[c# 기초] StringBuilder 사용 이유? (0) | 2022.05.09 |
[c# 기초] partial을 쓰는 이유? (0) | 2022.05.06 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.