인프런 커뮤니티 질문&답변

302302님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Packet Generator #5

Action Invoke 질문입니다.

21.03.12 20:58 작성

·

3.6K

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. 11:55

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

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

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 03. 12. 21:02

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

302302님의 프로필 이미지

작성한 질문수

질문하기