티스토리 뷰

A?.b()

null 조건 연산자 (?.): 객체가 null인지 확인하고 null이 아니면 메서드나 속성을 호출합니다.

  • 사용 이유: null 참조 예외를 방지하고 코드 가독성을 향상시킵니다.
  • 이벤트 처리기에서 유용함: 이벤트에 구독자가 있는지 확인하고 안전하게 호출할 수 있습니다.

이 연산자를 사용하면 코드가 더 간결해지고, null 참조 예외로 인한 오류를 방지할 수 있습니다.

----------------------------------------------------------------------

X = A ?? B

null  병합 연산자 (??):    a ?? b 표현식은 a가 null이 아니면 a를 반환하고, null이면 b를 반환합니다.

----------------------------------------------------------------------

1. Null 조건 연산자(?.)

  • PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    • PropertyChanged가 null이 아닌 경우에만 Invoke 메서드를 호출합니다.
    • PropertyChanged가 null이면 Invoke 메서드는 호출되지 않고, 예외도 발생하지 않습니다.

이 연산자는 이벤트 처리기에서 특히 유용합니다. 이벤트에 구독자가 없는 경우 이벤트 델리게이트는 null일 수 있으므로, null 조건 연산자를 사용하면 null 참조 예외를 피할 수 있습니다.

예제: Null 조건 연산자 사용

다음은 null 조건 연산자를 사용한 코드 예제입니다:

위 코드는 PropertyChanged 이벤트에 구독자가 있는지 확인하고, 구독자가 있을 때만 이벤트를 호출합니다.

Null 조건 연산자 없이 동일한 동작 구현

null 조건 연산자를 사용하지 않고 동일한 동작을 구현하려면 다음과 같이 작성해야 합니다:

 

이 코드에서는 PropertyChanged 이벤트 델리게이트를 로컬 변수 handler에 할당한 후, handler가 null인지 확인하고, null이 아니면 이벤트를 호출합니다.

-------------------------------------------------------------

2. Null 병합 연산자(??)

_execute = execute ?? throw new ArgumentNullException(nameof(execute));

execute가 null인지 확인하고

 1. execute가 null이 아니면 _execute에 execute를 할당합니다.

  2. execute가 null이면 ArgumentNullException을 던집니다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함