푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 배우기
C# 배우기

다른 카테고리

C# 널 병합 연산자 이해하기

C#의 null 병합 연산자(??)를 사용하면 개발자는 null 검사 로직을 간소화하여 코드의 장황함을 줄이고 가독성을 향상시킬 수 있습니다. 길고 복잡한 if-else 조건을 작성하는 대신, 이 연산자는 null 값을 만났을 때 대체 값을 할당하는 간결한 방법을 제공합니다. 이 글에서는 Gerald Versluis의 비디오를 따라가면서 널 병합 연산자를 자세히 살펴보겠습니다. C# 널 병합 연산자(??) 이해하기 그리고 ??=) (https://www.youtube.com/watch?v=aIp0jUr6A24&list=PLfbOp004UaYWWOZFZ585BCeRvTduLt9Fm&index=11) 영상의 주요 부분을 분석하고 제럴드가 이 유용한 C# 기능을 어떻게 시연하는지 살펴보겠습니다.

소개

영상 초반에 제럴드는 C#의 강력한 기능인 널 병합 연산자를 소개하며, 이 연산자가 널 검사에 필요한 코드 줄 수를 크게 줄여준다고 설명합니다. 그는 이 연산자가 조건 검사를 단순화하고 코드를 더 읽기 쉽게 만든다고 강조합니다. 그 이점을 설명하기 위해 제럴드는 샘플 애플리케이션을 통해 널 병합 연산자의 다양한 사용 사례를 구현하고 설명합니다.

샘플 앱 개요

제럴드는 간단한 콘솔 애플리케이션을 설정하는 것으로 시작합니다. 그는 이전 영상에서 시연을 위해 try.dot .NET 웹사이트를 사용했지만, 버전 제한(C# 7만 지원) 때문에 Visual Studio for Mac으로 전환했다고 언급합니다. 그는 해당 예제들이 윈도우용 Visual Studio에서도 작동할 것이라고 확신시켜 줍니다.

시연 준비를 위해, 제럴드는 단일 Name 속성이 있는 기본 Person 클래스를 생성합니다:

public class Person 
{
    public string Name { get; set; }
}
public class Person 
{
    public string Name { get; set; }
}

그는 이 클래스의 인스턴스를 초기화하여 null 병합 연산자가 실제 시나리오에서 어떻게 작동하는지 보여줍니다.

널 검사를 널 병합 연산자로 대체(??)

제럴드는 이제 널 병합 연산자(??)를 사용하여 널 검사 로직을 단순화하는 방법을 보여줍니다. 그는 Name 속성에 null을 할당하고 ??를 사용합니다. 대체값을 제공하기 위해:

var name = person.Name ?? "Gerald";
var name = person.Name ?? "Gerald";

제럴드는 이 연산자가 나오기 전에는 개발자들이 if 문을 사용했다고 설명합니다.

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}
string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

??를 사용하여 이 논리는 한 줄로 축소됩니다. person.Name가 null일 때, 'Gerald'가 할당됩니다; 그렇지 않으면 person.Name는 자신의 값을 유지합니다. 그는 프로그램을 실행하고 출력 결과가 정확한지 확인합니다.

예외를 발생시키기 위한 널 병합

다음으로 제럴드는 또 다른 사용 사례인 null 병합 연산자를 사용하여 예외를 던지는 방법을 살펴봅니다. 그는 대체 값을 제공하는 대신 null을 만났을 때 예외를 발생시키는 방법을 보여줍니다.

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");
var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

제럴드는 특히 null 값이 허용되지 않아야 하는 메서드 매개변수나 속성을 다룰 때 이 기능이 유용하다고 강조합니다. 그는 이 기능이 프로젝트 설정에 따라 C# 7 또는 8 버전에서 도입되었다고 설명합니다. person.Name의 값이 null인 상태로 코드를 실행하면 ArgumentNullException가 발생하여 의도하지 않은 null 참조를 효과적으로 방지합니다.

널 병합 복합 할당(??=)

제럴드는 이어서 기본값을 할당하는 더욱 간소화된 방법을 제공하는 널 병합 복합 할당 연산자(??=)에 대해 설명합니다. 다음과 같이 쓰는 대신에:

if (person.Name == null)
{
    person.Name = "Gerald";
}
if (person.Name == null)
{
    person.Name = "Gerald";
}

그는 이를 다음과 같이 간소화합니다.

person.Name ??= "Gerald";
person.Name ??= "Gerald";

제럴드는 ??= 연산자는 왼쪽 피연산자가 null인 경우에만 지정된 값을 할당한다고 설명합니다. person.Name에 이미 값이 있으면 변경되지 않습니다. 이 연산자는 필드를 초기화하거나 변수가 절대 null이 되지 않도록 하는 데 특히 유용합니다.

널 조건 연산자와 결합

마지막 부분에서 제럴드는 널 병합 연산자를 널 조건 연산자(?.)와 결합하는 방법을 보여줍니다. null 조건 연산자를 사용하면 NullReferenceException를 발생시키지 않고 속성에 안전하게 접근할 수 있습니다. 그는 다음과 같은 예를 제시합니다.

var length = person?.Name?.Length ?? 0;
var length = person?.Name?.Length ?? 0;

제럴드는 person 또는 Name가 null인 경우, 예외를 던지는 대신 결과가 기본적으로 0이 되도록 보장한다고 설명합니다. 이 조합은 null 허용 참조 형식이나 복잡한 객체 계층 구조를 다룰 때 유용합니다.

결론

이 영상에서 제럴드 버슬루이스는 널 병합 연산자(??)와 널 병합 복합 할당 연산자(??=)의 강력한 기능을 효과적으로 설명합니다. 그는 이러한 연산자들이 기존의 널(null) 검사를 대체하여 코드를 더욱 간결하고 읽기 쉽게 만드는 방법을 보여줍니다. 이러한 기능을 활용하면 개발자는 더욱 깔끔하고 효율적인 C# 애플리케이션을 작성할 수 있습니다.

이러한 개념이 실제로 어떻게 적용되는지 보고 싶으시다면, Gerald Versluis의 "C# Null 병합 연산자(??) 이해하기" 전체 영상을 확인해 보세요. 그리고 ??=)"

Hero Worlddot related to C# 널 병합 연산자 이해하기
Hero Affiliate related to C# 널 병합 연산자 이해하기

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해