-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
event와 delegate 질문드립니다!
22.12.05 01:37 작성 22.12.05 02:01 수정 조회수 358
1
차이점
event와 delegate 는 개념이 거의 같은데,
delegate는 어디서든 호출이 가능하고
event는 public 한정자로 생성해도
생성된 클래스 내에서만 호출이 가능
즉 다른 곳에서는 직접호출 불가능
만약 다른 클래스에서 사용하려면 Update처럼 뭔가를 만들어서(이런것도 프로퍼티라고 하나요?) 안에 넣어서 사용해야 된다.
event는 메서드를 추가할 때 꼭 +=, -= 를 사용한다
으로 이해했는데 이렇게 생각해도 괜찮을까요?
delegate 질문
OnInputKey InputKey;
InputKey = OnInputTest;
위에 것이
내부적으로는
OnInputKey InputKey = new OnInputKey(OnInputTest);
로 실행된다고 답글을 남기신 것을 보았는데
개발자들이 조금 더 편하게 사용하려고 생략한 방법인가요?
둘 다 똑같은 것이고 표기만 다르다면 실무에서는 어떤 표기를 사용하나요??
위에 두 것이 같은 것이라면
1.InputKey = OnInputTest;
2.InputKey += OnInputTest;
3.OnInputKey InputKey = new OnInputKey(OnInputTest);
다 같은 것일까요??
delegate 체이닝 질문
1.InputKey = OnInputTest1 +OnInputTest2
는 안되는데
2.InputKey = new OnInputKey(OnInputTest1) +new OnInputKey(OnInputTest2)
는 되는 이유가 있을까요??
내부적으로는 같은데.. 컴파일러가 인식을 못 하는 것인가요?
event
개인적인 생각으로 event가 더 안전?하고
+= 함수1
+= 함수2
이런 식으로 구독해서 사용하는 것이 참 보기도 좋다고 생각하는데 delegate만 사용하지 말고 아예 전부 event로 사용하지 않는 이유가 있을까요?
답변을 작성해보세요.
1
Rookiss
지식공유자2022.12.05
네 그렇습니다. event/delegate의 관계는 property/멤버변수의 관계와 비슷합니다.
딱히 그런건 없습니다. 애당초 실무에 대한 환상을 버리세요. 그냥 학생이 취업해서 실무를 뛰면 실무자입니다 ㅎㅎ 다만 += 는 기존 것에다가 추가한다는 점에서 나머지 둘 과는 다릅니다.
음~ 글쎄요 전 안 되면 문법적으로 안 되는 것이니 굳이 이유를 찾지 않고 납득하는 편이라 거기까진 잘 모르겠네요.
event가 delegate에다가 기능을 제한해서 안전하게 만든 일종의 상위 호환입니다. 따라서 뭘 사용하더라도 딱히 상관은 없습니다.
답변 1