0Pricing
C# Academy · 강의

널 허용 참조 형식(이해) 및 주석(C# 6 패턴)

C# 6에는 널 허용 참조 형식(string?)이 없습니다. 입력 검사, 명확한 문서화, 도우미 Require.NotNull을 사용한 안전한 널 처리 방법을 배우고, 값 형식의 Nullable 와 비교합니다.

널 허용 참조 형식(이해) 및 주석(C# 6 패턴)은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

NRT 인식 및 대체 처리

개념: Nullable 참조 형식(예: string?)은 최신 C#에서 컴파일러 검사를 추가합니다.

  • C# 6은 string?을 지원하지 않습니다.
  • 가드, 명확한 문서, 간단한 도우미를 사용하십시오.
  • 기본적으로 null이 아닌 값을 반환하십시오.

null 방어

참조 형식 매개변수에 ArgumentNullException 가드를 추가한 후 값을 null이 아닌 것으로 취급하십시오.

using System;

public static class Greeter
{
  // Contract: name must not be null (C# 6 has no string? to enforce)
  public static string Hello(string name)
  {
    if (name == null) throw new ArgumentNullException("name"); // guard
    return "Hello " + name.ToUpper(); // safe after guard
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(Greeter.Hello("Ada"));
    try
    {
      Console.WriteLine(Greeter.Hello(null)); // will throw (by design)
    }
    catch (Exception ex)
    {
      Console.WriteLine("Caught: " + ex.GetType().Name);
    }
  }
}

Require.NotNull 도우미

작은 Require.NotNull 도우미를 만들어 반복 코드를 줄이고 의도를 분명하게 하십시오.

using System;

public static class Require
{
  // Works for reference types; returns the validated value
  public static T NotNull<T>(T value, string name) where T : class
  {
    if (value == null) throw new ArgumentNullException(name);
    return value;
  }
}

public sealed class Email
{
  public string Address { get; private set; }

  public Email(string address)
  {
    Address = Require.NotNull(address, "address").Trim();
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Email e = new Email("user@mail.com");
    Console.WriteLine(e.Address);
  }
}

Nullable&lt;T&gt;와 참조 형식 비교

Nullable<T>(예: int?)는 값 형식에 사용합니다. 참조 형식은 이미 null일 수 있으므로 C# 6에서는 가드를 사용합니다.

using System;

public class Program
{
  public static void Main(string[] args)
  {
    int x = 5;              // value type (non-nullable)
    int? maybe = null;      // Nullable<T> works for value types
    Console.WriteLine("x=" + x);
    Console.WriteLine("maybe has value? " + maybe.HasValue);
    Console.WriteLine("maybe or default: " + (maybe ?? -1));
  }
}

null 계약 문서화

XML 문서에 null 가능성을 명시하고 일관성을 유지하십시오. 항상 null이 아니게 하거나, null이 가능할 때를 명확히 문서화해야 합니다.

using System;

/// <summary>
/// Parses "key=value" and returns the value part.
/// Returns null if the format is invalid.
/// </summary>
public static class Parser
{
  // Explicitly document when null can be returned.
  public static string TryGetValue(string line)
  {
    if (line == null) throw new ArgumentNullException("line");
    int idx = line.IndexOf("=");
    if (idx < 0 || idx == line.Length - 1) return null; // documented nullable return
    return line.Substring(idx + 1);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(Parser.TryGetValue("a=1"));
    Console.WriteLine(Parser.TryGetValue("oops")); // prints nothing (null)
  }
}

null 안정성 확인 목록(C# 6)

확인 목록:

  • ArgumentNullException으로 입력을 가드하십시오.
  • 기본적으로 null이 아닌 값을 반환하고, null이 가능한 반환값은 문서화하십시오.
  • 작은 도우미(Require.NotNull)를 사용하여 코드를 깔끔하게 유지하십시오.
  • 합리적인 경우 null 대신 빈 문자열을 사용하는 등 null을 피하는 오버로드를 우선하십시오.

C# 6의 null 안정성

간단한 확인: nullable 참조 형식이 없는 C# 6에서 공개 API의 null 관련 버그를 줄이려면 어떤 방법이 좋습니까?

복습

복습: NRT는 최신 기능입니다. C# 6에서는 가드, 명확한 문서, 도우미 메서드, 예측 가능한 null이 아닌 반환 계약을 사용하여 안전성을 유지하십시오.

자주 묻는 질문

“널 허용 참조 형식(이해) 및 주석(C# 6 패턴)” 강의는 무료인가요?

네 — “널 허용 참조 형식(이해) 및 주석(C# 6 패턴)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“널 허용 참조 형식(이해) 및 주석(C# 6 패턴)”에서 뭘 배우나요?

C# 6에는 널 허용 참조 형식(string?)이 없습니다. 입력 검사, 명확한 문서화, 도우미 Require.NotNull을 사용한 안전한 널 처리 방법을 배우고, 값 형식의 Nullable 와 비교합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.

“널 허용 참조 형식(이해) 및 주석(C# 6 패턴)” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 제네릭 메서드와 타입, 제약 조건
  2. 인터페이스와 델리게이트의 변성(in/out)
  3. 널 허용 참조 형식(이해) 및 주석(C# 6 패턴)
← C# Academy(으)로 돌아가기