1. 💡 ?. (Elvis) 연산자
_logger?.LogInfo($"[ConfigurationService] 설정 파일 로드 시작: {_settingsFilePath}");
C#에서는 위와 같이 ?. 와 같은 표현식을 볼 수 있는데 이를 Elvis 연산자라고 부르며 위 코드는 아래와 같이 동작한다.
1. _logger가 null이 아닌 경우: LogInfo 메서드를 정상적으로 호출
2. _logger가 null인 경우: LogInfo 메서드를 호출하지 않고 그냥 건너뜀. (NullReferenceException이 발생하지 않음)
2. 일반적 Null 체크와 비교
// 기존 방식
if (_logger != null)
{
_logger.LogInfo($"[ConfigurationService] 설정 파일 로드 시작: {_settingsFilePath}");
}
// ?. 연산자 사용
_logger?.LogInfo($"[ConfigurationService] 설정 파일 로드 시작: {_settingsFilePath}");
3. C#의 Null 관련 편의 기능들 정리
// 1. ?. (null 조건부 연산)
var length = text?.Length;
// 2. ?? (null 병합 연산)
string name = userName ?? "Guest";
// 3. ??= (null 병합 할당)
config ??= LoadDefaultConfig(); // config가 null일 때만 할당
// 4. ?[] (null 조건부 인덱서)
var firstItem = items?[0];
// 5. C# 8.0 이후 - nullable reference types
string? nullableString = null; // 명시적으로 null 가능
string nonNullString = "text"; // null 불가능
'C# + WPF' 카테고리의 다른 글
| [C#] - WPF Dispatcher 패턴의 탄생 배경과 WPF에서의 필요성 (0) | 2025.07.28 |
|---|---|
| 📝[WPF] CommunityToolkit.Mvvm에서 Observable Property와 RelayCommand (1) | 2025.06.26 |
| 📝[WPF] - DataContext란 무엇인가? (0) | 2025.06.25 |
| 📝C# vs Java 빠르게 비교 + WPF 기본 구조 (0) | 2025.04.06 |