• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

event와 delegate 질문드립니다!

22.12.05 01:37 작성 22.12.05 02:01 수정 조회수 358

1

 

  1. 차이점

    event와 delegate 는 개념이 거의 같은데,

    delegate는 어디서든 호출이 가능하고

     

    event는 public 한정자로 생성해도

    생성된 클래스 내에서만 호출이 가능

    즉 다른 곳에서는 직접호출 불가능

    만약 다른 클래스에서 사용하려면 Update처럼 뭔가를 만들어서(이런것도 프로퍼티라고 하나요?) 안에 넣어서 사용해야 된다.

     

    event는 메서드를 추가할 때 꼭 +=, -= 를 사용한다

     

    으로 이해했는데 이렇게 생각해도 괜찮을까요?

 

 

 

  1. delegate 질문

    OnInputKey InputKey;

    InputKey = OnInputTest;

    위에 것이

    내부적으로는

    OnInputKey InputKey = new OnInputKey(OnInputTest);

    로 실행된다고 답글을 남기신 것을 보았는데

    개발자들이 조금 더 편하게 사용하려고 생략한 방법인가요?

    둘 다 똑같은 것이고 표기만 다르다면 실무에서는 어떤 표기를 사용하나요??

위에 두 것이 같은 것이라면

1.InputKey = OnInputTest;

2.InputKey += OnInputTest;

3.OnInputKey InputKey = new OnInputKey(OnInputTest);

다 같은 것일까요??

 

 

  1. delegate 체이닝 질문

     

    1.InputKey = OnInputTest1 +OnInputTest2

    는 안되는데

    2.InputKey = new OnInputKey(OnInputTest1) +new OnInputKey(OnInputTest2)

    는 되는 이유가 있을까요??

    내부적으로는 같은데.. 컴파일러가 인식을 못 하는 것인가요?

     

  2. event

    개인적인 생각으로 event가 더 안전?하고

    += 함수1

    += 함수2

    이런 식으로 구독해서 사용하는 것이 참 보기도 좋다고 생각하는데 delegate만 사용하지 말고 아예 전부 event로 사용하지 않는 이유가 있을까요?

     

     

     

 

 

 

답변 1

답변을 작성해보세요.

1

  1. 네 그렇습니다. event/delegate의 관계는 property/멤버변수의 관계와 비슷합니다.

  2. 딱히 그런건 없습니다. 애당초 실무에 대한 환상을 버리세요. 그냥 학생이 취업해서 실무를 뛰면 실무자입니다 ㅎㅎ 다만 += 는 기존 것에다가 추가한다는 점에서 나머지 둘 과는 다릅니다.

  3. 음~ 글쎄요 전 안 되면 문법적으로 안 되는 것이니 굳이 이유를 찾지 않고 납득하는 편이라 거기까진 잘 모르겠네요.

  4. event가 delegate에다가 기능을 제한해서 안전하게 만든 일종의 상위 호환입니다. 따라서 뭘 사용하더라도 딱히 상관은 없습니다.