무효 클릭 IP 추적 중...
c#

[c#] 델리게이트(delegate) 개념 | += , -=

꼬예 2022. 5. 10.
[c#] 델리게이트(delegate) 개념 | += , -=

정수값변수에 담고 싶을때는 

정수를 담고싶을때는 int로 선언하면됩니다.

[c#] 델리게이트(delegate) 개념 | += , -=

문자를 담고싶을때는 string로 선언하면됩니다.

[c#] 델리게이트(delegate) 개념 | += , -=

함수(or 메소드)변수에 담고 싶을땐 어떻게 할까요?

 

 

이때 사용하는것이 대리자(delegate)입니다. 

 

 

이 글과 읽으면 좋은글

 

1. 델리게이트 선언방법

 

1) 제일 앞에 delegate 명시하고, 리턴값 타입, 매개변수 구성을 맞춰서 정의를 합니다.

 

아래 그림 처럼 변수에 넣고 싶은 메소드인 Print의 구성요소를 맞춰서  delegate를 정의하는것을 알 수 있습니다.

[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법

 

2) 메소드를 가진 클래스를 먼저 객체화 하고, 메소드를 델리게이트의 인자로 넣는 형태로 정의를 합니다.

 

[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법

델리게이트가 마치 변수처럼 사용되는걸 알 수 있습니다.

 

Output:

[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법

 

이 방법 외에도 c# 2.0이상에서 사용하는 방법으로 아래와 같이 사용할 수 있습니다.

인자로 넣는 것이 아니라 할당 하는 식으로 정의를 합니다.

[c#] 델리게이트(delegate) 개념 | += , -= - 1. 델리게이트 선언방법

 

 

 

 

2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용

델리게이트를 이용하면 변수에 함수 1개만 담는게 아니라 여러개를 담을 수도 있습니다. 

 

아래와 같이 대리자(델리게이트)를 이용할 준비를 합니다.(return 타입, 매개변수 구성 맞추기)

[c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용

델리게이트에 PrintA, PrintB를 함께 담아보겠습니다.

 

[c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용

위와 같이 기존처럼 델리게이트를 이용하되, 추가하고싶은 메소드(여기선 Test.PrintB)는 += 를 이용해서 추가 합니다.

 

Output:

[c#] 델리게이트(delegate) 개념 | += , -= - 2. 멀티캐스트 델리게이트(multicast delegate) /+=, -= 사용

하나의 델리게이트를 실행했는데 두개의 메소드가 실행된걸 알 수 있습니다. 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글

꼬예님의
글이 좋았다면 응원을 보내주세요!