IRONSOFTWAREHOME

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

[[academy-video-youtube({"vid": "aIp0jUr6A24", "start_time": "0", "title": "C# Null 병합 연산자(?? 이해" 그리고 ??=)", "제작자": "Gerald Versluis", "길이": "12분 43초"})]]

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에서도 작동할 것이라고 확신시켜 줍니다.

데모를 준비하기 위해 Gerald는 단일 Name 속성을 가진 기본 Person 클래스를 생성합니다:

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

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

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

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

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

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

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");

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

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

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

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

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

person.Name ??= "Gerald";

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

널 조건 연산자와 결합

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

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

Gerald는 person 또는 Name이 null일 경우 예외를 발생시키기보다는 결과가 기본적으로 0이 되도록 보장한다고 설명합니다. 이 조합은 null 허용 참조 형식이나 복잡한 객체 계층 구조를 다룰 때 유용합니다.

결론

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

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

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

OR
bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.