Search

이것이 C#이다: 4장 - 데이터를 가공하는 연산자

서론

프로그래밍 언어를 마스터하는 과정에서 연산자의 이해는 필수적입니다. C#은 다양하고 강력한 연산자를 제공하며, 이를 효과적으로 활용하면 코드의 가독성과 효율성을 크게 향상시킬 수 있습니다. 본 포스트에서는 C#의 연산자, 특히 null 처리와 관련된 고급 연산자들을 자세히 살펴보겠습니다.

본론

1. C# 연산자 개요

C#은 다양한 연산자를 제공하여 데이터 조작, 논리 연산, 비교 등 다양한 작업을 수행할 수 있게 해줍니다. 기본적인 산술 연산자(+, -, *, /)부터 비트 연산자(&, |, ^), 논리 연산자(&&, ||), 비교 연산자(==, !=, <, >) 등이 있습니다.
이러한 연산자들은 모든 언어에 있기 때문에, 이번에 주목할 것은 C# 6.0에서 도입된 두 가지 특별한 연산자입니다. 바로 null 조건부 연산자(?.)와 null 병합 연산자(??)입니다.

2. null 조건부 연산자 (?.)

null 조건부 연산자 ?.는 객체의 멤버에 안전하게 접근할 수 있게 해주는 강력한 도구입니다.

작동 원리:

1.
객체가 null인지 검사합니다.
2.
null이 아니면 지정된 멤버를 반환합니다.
3.
null이면 null을 반환합니다.

코드 예제:

public class User { public string Name { get; set; } public Address Address { get; set; } } public class Address { public string City { get; set; } } User user = null; string city = user?.Address?.City; Console.WriteLine(city); // 출력: null (NullReferenceException 발생하지 않음)
C#
복사
이 예제에서 user?.Address?.Cityuser가 null이 아닌 경우에만 Address에 접근하고, Address가 null이 아닌 경우에만 City에 접근합니다. 어느 단계에서든 null을 만나면 전체 표현식은 null을 반환합니다.

적용 예시:

외부 API로부터 받아온 데이터를 처리할 때 이 연산자를 유용하게 사용할 수 있습니다. API 응답의 구조가 복잡하고 일부 필드가 선택적일 때, null 조건부 연산자를 사용하면 안전하게 데이터에 접근할 수 있습니다.

3. null 병합 연산자 (??)

null 병합 연산자 ??는 null 값에 대한 기본값을 제공하는 간결한 방법입니다.

작동 원리:

1.
왼쪽 피연산자가 null인지 평가합니다.
2.
null이 아니면 왼쪽 피연산자를 반환합니다.
3.
null이면 오른쪽 피연산자를 반환합니다.

코드 예제:

string name = null; Console.WriteLine(name ?? "Unknown"); // 출력: Unknown name = "John"; Console.WriteLine(name ?? "Unknown"); // 출력: John
C#
복사
이 연산자는 null 체크와 기본값 할당을 한 줄로 처리할 수 있게 해줍니다.

적용 예시:

데이터베이스에서 가져온 사용자 정보 중 일부가 null일 수 있는 상황에서 이 연산자를 활용할 수 있습니다. 예를 들어, 사용자의 별명이 설정되지 않았을 때 기본값을 사용하는 경우:
string displayName = user.Nickname ?? user.Username ?? "Anonymous";
C#
복사
이렇게 하면 별명이 없으면 사용자 이름을, 사용자 이름도 없으면 "Anonymous"를 표시하게 됩니다.

결론

C#의 연산자, 특히 null 처리와 관련된 연산자들은 코드의 안정성과 간결성을 크게 향상시킵니다. null 조건부 연산자 (?.)와 null 병합 연산자 (??)를 적절히 활용하면, null 검사 로직을 간소화하고 예외 처리를 보다 우아하게 할 수 있습니다.
null 처리는 많은 버그의 원인이 되곤 하는데, C#이 제공하는 이러한 해결책들을 활용하면 더 신뢰성 있는 소프트웨어를 개발할 수 있을 것 같습니다.

참고 자료

박상현, "이것이 C#이다", 한빛미디어, 2023