C#/이펙티브 C#

아이템8.이벤트 호출 시에는 null 조건 연산자를 사용하라.

공부를하자 2023. 6. 29. 00:05

1.이벤트(Event)

  -C#에서 객체의 사건을 표현하는 방식

  -이벤트 처리기(Event Handler): 이벤트 발생 실행되는 메소드

  -외부에서 호출 불가(은닉성)

2.null 조건 연산자 (C# 6.0 추가됨)

  -객체의 맴버에 접근 하기 전에 해당 객체가 null인지 검사하는 형식

 -객체가 null 이면 null 반환 그렇지 않으면 지정된 멤버를 반환

 

3.예제

-이벤트를 호출 이벤트 핸들러에 등록된 정보가 없다면 nullreference 띄운다.

 

 

-그래서 if문으로 null값을 검사한다.

-하지만 이렇게 되면 멀티스레드 환경해서 문제가 생긴다.

-다른 스레드 환경에서에서 이벤트를 취소하게 된다면 nullreference 띄우게 된다.

 

- 코드는 멀티스레드 환경에서의 문제를 해결한 C# .Net 권장코드다.

-var변수를 만들고 핸들러 값을 저장시킨다.

-다른 스레드에서 이벤트를 취소해도 복사한 정보가 var 들어있어 정상 호출 된다.

 

 

 

- 코드는 null 조건 연산자 사용하여 null 값이 아닐 때만 이벤트가 발생하도록 하는

 코드다. Invoke 메소드() 사용하여 이전 값보다 휠씬 간결하다.

*Invoke 메소드() 괄호안의 대리자를 실행시키는 메소드

-결론

null 조건 연산자를 사용하면 코드의 가독성을 개선하고 복잡도를 줄일 있다.