field 키워드
소개
C# 14.0에서는 속성(Property)을 보다 간결하게 구현할 수 있도록 field 키워드가 도입되었습니다. 이 키워드는 속성 접근자 내부에서 컴파일러가 생성하는 백킹 필드(backing field) 를 직접 참조할 수 있게 하여, 불필요한 필드 선언을 제거하고 코드 가독성과 유지보수성을 향상시킵니다.
1. 기존 방식
private string _msg;
public string Message
{
get => _msg;
set => _msg = value ?? throw new ArgumentNullException(nameof(value));
}
2. field 키워드를 사용하는 새로운 방식
public string Message
{
get;
set => field = value ?? throw new ArgumentNullException(nameof(value));
}
3. 사용 가능 위치
- get
- set
- init
예:
public int Count
{
get => field;
set => field = Math.Max(0, value);
}
4. 이름 충돌 주의
public int field;
구분법:
set => @field = value;
set => this.field = value;
따라하기
파일명: FieldKeywordDemo.cs
FieldKeywordDemo.cs
using System;
public class User
{
// null 불가 문자열 속성
public string Name
{
get;
set => field = value ?? throw new ArgumentNullException(nameof(value));
}
// 0보다 작은 나이 입력 시 0으로 보정
public int Age
{
get => field;
set => field = Math.Max(0, value);
}
// 공백 제거 후 Email 저장
public string Email
{
get => field;
init => field = value.Trim();
}
}
public class Program
{
public static void Main()
{
Display(); // "사용자 정보 출력"
}
// 사용자 정보 출력 데모
public static void Display()
{
var user = new User
{
Name = "Ho",
Age = -10, // 0으로 보정됨
Email = " ho@example.com "
};
Console.WriteLine($"Name: {user.Name}");
Console.WriteLine($"Age: {user.Age}");
Console.WriteLine($"Email: '{user.Email}'");
}
}
예상 결과
Name: Ho
Age: 0
Email: 'ho@example.com'
마무리
field 키워드는 자동 구현 속성을 확장하면서도 코드를 간결하게 유지할 수 있는 실용적인 기능입니다.
백킹 필드 선언 없이도 속성 내부에서 로직을 자연스럽게 구현할 수 있어 모델링 작업에 매우 유용합니다.
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!