VisualStudio/C#

[C#] Action.Invoke() vs Action() 차이

usingsystem 2023. 1. 5. 13:26
728x90

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

기존 예외처리
	if(_action !=null)
	_action.Invoke(3);// _action(3) 과 같은 코드
? 키워드를 사용 한 예외처리
	_action?.Invoke(3); //if(_action !=null)를 ?키워드를 사용하여 null임을 체크할 수 있다.

 

action(); 는 action.Invoke()와 컴파일과정이 100프로 동일 하다. 

action이 null이면 NullReferenceException을 뱉기 때문에 위험하다 그래서 invoke를 사용하기 전에 null 검사를 해야 하며 기존 예외처리 처럼 if문을 사용하여 예외 처리를 하게된다.

  _action.Invoke(3); 와 _action(3)은 같은 코드이다. 
  단지 ? 키워드로 예외처리 코드를 줄일 수 있다.

 

728x90