• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Action Invoke 질문입니다.

21.03.12 20:58 작성 조회수 3.42k

1

action 에 이벤트를 할당하고 Invoke 해서 실행시키는데 이게 그냥 실행시키는거랑 어떤 차이가 있을까요?

Action<PacketSession, IPacket> action = null;
if (_handler.TryGetValue(p.Protocol, out action))
{
//1
action.Invoke(session, p);

//2
action(session, p);
}

답변 2

·

답변을 작성해보세요.

4

한건희님의 프로필

한건희

2021.03.22

action.Invoke는 action?.Invoke와 같이 action 콜백이 null인지 검사하고 null이 아닐때에만 Invoke 되도록 사용하고자 할 때 많이 사용해요.

action(); 는 action이 null이면 NullReferenceException을 뱉기 때문에 위험하죠. 이전에 null 검사를 해야하는데 그렇게 되면 코드가 쓸데없이 길어지니 좋지 않죠.

1

2번도 내부적으로는 Invoke를 하기 때문에
결과적으로 똑같습니다.