• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

이벤트 관련하여 질문입니다.

21.08.03 23:09 작성 조회수 137

0

이벤트 강의를 들으며  코드를 작성하며 든 의문점들입니다.

1. event 변수가 비어있을 경우 함수를 실행하게 되면 충돌이 발생할텐데 이 경우 null 체크를 어떻게 하는 건가요? 

-if(Manager.event != null) 을 하니 event는 += -=의 왼쪽에만 들어갈 수 있다고 하더군요.

-추가로 이벤트의 함수를 추가하고 뺄 때 의도치 않게 이전에 사용했던 함수가 들어있을 가능성도 있어서 루틴을 돌 때마다 이벤트를 null로 초기화 하고 싶은데 이 부분도 마찬가지로 같은 오류를 뜨우더군요.

2. 델리게이트의 경우 인자로 넘겨줄 수 있었는데 event 역시 delegate를 객체로 만들어 준 것이기에 인자로 넘겨줄 수 있을거라 생각했는데 실제 코드 작성을 해보니 위의 이유와 마찬가지로 인자 사용이 불가하다고 뜨네요.

-사실 이 부분은 함수 내부에서 이벤트 함수를 실행하게 할 것이라면 상관없는 부분이지만 사용자가 건들 수 없고 델리게이트 인자만 넘길 수 있는 경우가 있을 지도 모른다 생각하니 이 경우는 이벤트 사용이 제한되는 지 궁금합니다.

답변 2

·

답변을 작성해보세요.

0

강동훈님의 프로필

강동훈

질문자

2021.08.04

답변 감사합니다.

0

null 체크 관련 부분은 여러가지 방법이 있고 C# 6.0에서는 ?. 과 같은 문법이 존재합니다.
아래 링크 참조 바랍니다.

https://stackoverflow.com/questions/33122371/why-should-i-check-for-null-before-i-invoke-the-custom-event

두번째 질문은 아래 링크를 참조 바랍니다.

https://social.msdn.microsoft.com/Forums/en-US/4d8a471c-0c45-42be-aa91-174c1250f22d/how-to-pass-an-event-as-parameter?forum=csharplanguage