★ Delagate는 메서드(들)을/를 참조할 수 있는 타입, Action은 반환값이 없는 Delagate, Func는 반환값이 있는 Delegate, Predicate는 반환값이 bool인 Delegate
Action, Func, Predicate는 매개변수/반환타입이 같은 메서드들만 등록할 수 있으며, Func의 경우 마지막으로 추가한 메서드의 결과를 반환한다.
델리게이트와 일반 메서드 호출의 차이는 무엇인가요? -> 메서드는 코드의 집합, 델리게이트는 메서드를 변수로 가지는 타입입니다 -> 선생님 답변 : 델리게이트는 함수를 저장하는 변수의 역할을 하기 때문에, 상황에 따라서 다른 함수(들)을/를 호출 할 수 있다.
Action과 Func의 차이를 설명하세요. -> Action은 반환값이 있는 델리게이트, Func는 반환값이 있는 델리게이트 입니다. (현재 반환값 int) -> 선생님 답변 : Action은 반환값이 없고, Func는 반환값이 없다.
event를 쓰면 delegate보다 어떤 점이 안전해지나요? -> event 키워드를 사용하면 외부에서 해당 델리게이트에 구독/해지만 가능해주고 호출 및 초기화는 클래스 내부에서만 가능해집니다. -> 선생님 답변 : event를 사용하게 되면, 외부에서 접근하여 구독/구독해지 는 가능하나, Invoke하거나 여타 다른 수정이 불가능하기 때문에 외부에서 임의로 수정하는 것을 막을 수 있다.
onDamage?.Invoke(30)에서 ?는 어떤 역할인가요? -> 델리게이트 onDamage에 등록된 메서드가 하나도 없다면(onDamage가 null이라면) onDamage를 실행하지 않도록 해줍니다. 즉 ?는 null 체크를 해주는 역할을 합니다. -> 선생님 답변 : null이라면 뒤의 내용을 무시함. (null 체크를 해준다.)
람다식으로 등록한 이벤트를 해지하려면 어떻게 해야 하나요? -> 람다식으로 등록한 이벤트는 해지할 수 없습니다. 람다식은 익명 메서드이기 때문에 델리게이트에 등록된 메서드와 동일한 람다식을 작성하더라도 서로 다른 메서드로 인식되어 해지할 수 없습니다. -> 선생님 답변 : 못함. 미리 특정 델리게이트로 저장해둔 후 등록하던가, 혹은 함수로 만들어져 있어야함.
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.

게임업계 취업을 준비하다 보면 조금 불편한 현실을 마주하게 됩니다. 게임회사에 들어가고 싶은 사람은 많습니다. 특히 신입 채용은 더 그렇습니다. 공고 하나에 많은 지원자가 몰리고, 회사 입장에서는 비슷한 조건의 지원자 가운데 사람을 선택할 수 있습니다. 그래서 다른 산업에서 흔히 이야기하는 “처음부터 연봉을 낮춰 부르지 마세요.” “적극적으로 협상하세요.”

우리들의 게임 발매 이야기
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.


게임업계 취업을 준비하다 보면 조금 불편한 현실을 마주하게 됩니다. 게임회사에 들어가고 싶은 사람은 많습니다. 특히 신입 채용은 더 그렇습니다. 공고 하나에 많은 지원자가 몰리고, 회사 입장에서는 비슷한 조건의 지원자 가운데 사람을 선택할 수 있습니다. 그래서 다른 산업에서 흔히 이야기하는 “처음부터 연봉을 낮춰 부르지 마세요.” “적극적으로 협상하세요.”
