Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 클래스에서 선택적(Optional) 속성 정의하고 활용하는 방법

C#에서 어떤 속성(property)이 null 값을 가질 수 있고, 그것이 유효한 경우 해당 속성은 선택적(optional)으로 간주됩니다. 반대로, CLR 형식 자체가 null을 가질 수 없는 속성은 선택적 속성으로 구성할 수 없습니다.

예를 들어, 문자열(string) 타입은 참조 형식이므로 null을 가질 수 있어 선택적 속성이 될 수 있습니다. 하지만 int와 같은 값 형식은 기본적으로 null을 허용하지 않기 때문에 int?처럼 nullable 형식으로 선언하지 않는 한 선택적 속성으로 만들 수 없습니다.

선택적 특성(Optional Attribute) 사용 예제

아래는 사용자 지정 OptionalAttribute를 직접 정의하고, Employee 클래스의 속성에 적용하는 예제입니다.

[AttributeUsage(AttributeTargets.Property,
Inherited = false,
AllowMultiple = false)]
internal sealed class OptionalAttribute : Attribute { }

public class Employee {
    public string EmpName { get; set; }

    [Optional]
    public string AlternativeName { get; set; }
}

코드 설명

OptionalAttributeAttribute 클래스를 상속하는 내부 봉인(sealed) 클래스입니다. AttributeUsage 특성을 통해 이 특성이 속성(Property)에만 적용될 수 있도록 제한했으며, 파생 클래스로 상속되지 않도록(Inherited = false) 설정하고, 하나의 속성에 여러 번 중복 적용되지 않도록(AllowMultiple = false) 지정했습니다.

Employee 클래스에서 EmpName은 필수 직원 이름을 나타냅니다. 반면 AlternativeName에는 [Optional] 특성이 붙어 있어, 대체 이름이 없어도(null이어도) 유효하다는 것을 코드 수준에서 명확하게 표현합니다. 이처럼 선택적 특성을 활용하면 속성의 필수 여부를 개발자에게 직관적으로 전달할 수 있습니다.