C# 8.0에서는 nullable reference types 기능이 도입되었습니다. 이 기능을 통해 참조형 변수가 null 값을 가질 수 있는지 여부를 명확하게 표시할 수 있습니다. string?는 이러한 nullable reference types 기능을 활용하는 예입니다. 아래에서 이 기능의 이유와 사용 방법을 설명하겠습니다.
Nullable Reference Types 도입 배경
전통적으로 C#의 모든 참조형 변수(예: string, object, 등)는 기본적으로 nullable입니다. 이는 개발자가 변수를 초기화하지 않았거나 특정 상황에서 null 값을 할당할 수 있음을 의미합니다. 그러나 null 참조를 허용하면 NullReferenceException과 같은 오류가 발생할 가능성이 있습니다. 이러한 오류는 런타임에만 발견되기 때문에 디버깅이 어렵습니다.
Nullable Reference Types의 목표
Nullable reference types는 참조형 변수의 null 가능성을 명확히 하여 이러한 문제를 줄이는 것을 목표로 합니다. C# 컴파일러는 변수가 null이 될 수 있는지 여부를 추적하고, 잠재적으로 위험한 코드에 대해 경고를 제공합니다.
Nullable Reference Types의 사용
nullable reference types 기능을 활성화하면, 모든 참조형 변수는 기본적으로 non-nullable입니다. 이는 변수에 null 값을 할당할 수 없음을 의미합니다. nullable로 선언하려면 변수 타입 뒤에 ?를 추가합니다.
예시
- Non-nullable string:
string nonNullableString = "Hello"; // nonNullableString = null; // 컴파일 오류 발생
- Nullable string:
string? nullableString = "Hello"; nullableString = null; // 허용됨
컴파일러 경고
nullable reference types 기능을 활성화하면, 컴파일러는 null 관련 경고를 발생시킵니다.
#nullable enable
string nonNullableString = "Hello";
nonNullableString = null; // 컴파일 경고 발생
string? nullableString = null;
if (nullableString != null)
{
Console.WriteLine(nullableString.Length); // 컴파일러가 nullableString이 null이 아님을 알 수 있음
}
else
{
Console.WriteLine("nullableString is null");
}
Nullable Reference Types 활성화
nullable reference types 기능은 프로젝트 파일(.csproj)에서 <Nullable> 속성을 설정하여 활성화할 수 있습니다.
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>
또는 개별 파일에서 #nullable enable 지시문을 사용하여 활성화할 수 있습니다.
요약
- string: null 값을 가질 수 없는 비-null 참조형 변수.
- string?: null 값을 가질 수 있는 nullable 참조형 변수.
- nullable reference types 기능은 null 참조 오류를 줄이고 코드의 안정성을 높이기 위한 C#의 새로운 기능입니다.
이 기능을 사용하면 코드의 null 처리 의도를 명확하게 하고, 컴파일 타임에 잠재적인 오류를 발견할 수 있습니다.
'공부 > C#' 카테고리의 다른 글
Blazor 기본 구성 (0) | 2024.06.28 |
---|---|
Blazor Server와 Web API (0) | 2024.06.27 |
웹 서버란? (0) | 2024.06.25 |
Async, Await (0) | 2024.06.25 |
LINQ(Language Integrated Query) (0) | 2024.06.25 |