[C#] Delegate는 왜 Reference 타입일까?

Date:     Updated:

카테고리:

태그:

Delegate에 대해 공부하다가 알게된 정보를 정리한 글입니다.
참고 책 : CLR via C#

Delegate는 왜 Reference 타입일까?

  • delegate를 통해 타입을 만들 때 컴파일러가 System.MulticastDelegate 를 상속받는 Class를 만든다
  • delegate의 중요 필드
    • _target : 연결한 메서드의 객체의 참조를 가지게 된다
      • Static 메서드인 경우 null로 된다
    • _methodPtr : 메서드 주소 포인터
    • _invocationList : delegate chain을 생성하면 delegate 배열을 참조한다

참고

  • delegate는 Immutable(불변성)이다
    • Combine 시 기존 객체가 변경되는 것이 아닌 새로운 delegate 객체를 생성한다
    • Remove 시 배열에 남은 요소가 하나라면 해당 남은 요소를 반환하고 만약 여러 요소가 남았다면 새로운 delegate 객체를 생성한다
    • 불변성이니 멀티스레드 환경에서 안전하다


💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우 
  언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸

맨 위로 이동하기

CSharp 카테고리 내 다른 글 보러가기

댓글 남기기