본문 바로가기
C#/C# 학습 (TIL)

C# 중급문법 Day4 Deligate

by jjiing 2022. 6. 17.

델리게이트란.

'메서드를 참조하는 대리자' 정도로 생각할 수 있다.

단, 델리게이트가 대신하는 메서드는 리턴타입과 매개변수가 모두 일치해야한다.

 

<델리게이트 문법>

 

사용1. 콜백

 

참고. 콜백이란?

 

 

 

 

 

중간에 특정부분 빼고 반복되는 함수를 한번에 유연하게 처리하기 위해서 사용해줄 수 있다.

그 특정 부분을 델리게이트가 수행해주게끔 하는 것

(계속해서 함수 내부 부분을 수정하거나 추가해서 사용하게 되면 개방.폐쇄 원칙에 위배된다.

개방.폐쇄 원칙 : 확장에는 개방/수정에는 폐쇄되도록 하는 원칙)

 

 

즉, 리턴타입과 매개변수가 같다면 델리게이트를 사용해 중간의 내용을 바꿔가면서 나머지는 반복되는 함수를 유연하게 처리할 수 있다는 것.

(이 용도는 델리게이트 사용 용도 중 하나일뿐)

 

 

 

 

사용2. 체인

델리게이트 하나가 여러개의 체인을 동시에 참조하는 것.

기능을 추가하거나 빼줄 수 있다. 

 

>> 어떤 특정한 상황에서 여러 처리를 한번에 할 때 유용

 

사용 예시)

몬스터의 Hp가 변할 때마다 생기는 다양한 처리들을 델리게이트로 묶어줄 수 있다.

start()에서 onReduceHp 델리게이트에 두가지 기능을 추가시켜놨다.

hp가 변할때마다 저 기능들이 수행되는 것.

 

그리고 특정상황 (여기서는 besekerzone안에 들어와있을 때)에서

특정기능을 추가시켜주거나 제외시켜줄 수 있다.

 

 

 

이렇게 해줄 경우 장점

각각 클래스의 의존성(결합성)이 줄어든다.
기능을 추가해주거나 수정해줄 때 더 간편하고 그럴 때마다 의존성을 높이지 않을 수 있다.