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 조건 연산자를 사용하면 코드의 가독성을 개선하고 복잡도를 줄일 수 있다.
'C# > 이펙티브 C#' 카테고리의 다른 글
| 아이템11. NET 리소스 관리에 대한 이해 (0) | 2023.07.02 |
|---|---|
| 아이템9.박싱과 언박싱을 최소화하라. (0) | 2023.06.30 |
| 아이템7. 델리게이트를 이용하여 콜백을 표현하라. (0) | 2023.06.25 |
| 아이템6.nameof 연산자를 적극 활용하라. (0) | 2023.06.24 |
| 아이템5.문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라. (0) | 2023.06.23 |