널 허용 참조 형식(이해) 및 주석(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<T>와 참조 형식 비교
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 안정성
복습
복습: 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 제네릭 메서드와 타입, 제약 조건
- 인터페이스와 델리게이트의 변성(in/out)
- 널 허용 참조 형식(이해) 및 주석(C# 6 패턴)