다음을 통해 공유


set 키워드(C# 참조)

set 키워드는 속성 또는 인덱서 요소에 값을 할당하는 속성 또는 인덱서의 accessor 메서드를 정의합니다. 자세한 내용 및 예제는 속성, 자동으로 구현된 속성인덱서를 참조하세요.

속성 getset 접근자가 프라이빗 지원 필드에서 값을 설정하거나 검색하는 것 외에 다른 작업을 수행하지 않는 간단한 경우 자동으로 구현된 속성을 사용할 수 있습니다. 다음 예제에서는 Hours 자동으로 구현된 속성으로 구현합니다.

class TimePeriod3
{
    public double Hours { get; set; }
}

Important

인터페이스 속성 선언이나 부분 속성에 대한 구현 선언에는 자동으로 구현된 속성허용되지 않습니다. 컴파일러는 자동으로 구현된 속성과 일치하는 구문을 구현 선언이 아닌 선언 선언으로 해석합니다.

접근자 본문 중 하나를 구현해야 할 수 있습니다. C# 13에서 미리 보기 기능으로 추가된 키워드는 field 필드 백업 속성을 선언합니다. 필드 지원 속성을 사용하면 다른 접근자를 직접 작성하는 동안 컴파일러에서 하나의 접근자를 생성할 수 있습니다. 키워드를 field 사용하여 컴파일러 합성 지원 필드에 액세스합니다.

class TimePeriod4
{
    public double Hours {
        get;
        set => field = (value >= 0)
            ? value
            : throw new ArgumentOutOfRangeException(nameof(value), "The value must not be negative");
    }
}

Important

field 키워드는 C# 13의 미리 보기 기능입니다. 상황별 키워드를 사용하려면 .NET 9를 preview 사용하고 field 프로젝트 파일에서 요소를 설정 <LangVersion> 해야 합니다.

이름이 지정된 field필드가 field 있는 클래스에서 키워드 기능을 사용하는 데 주의해야 합니다. 새 field 키워드는 속성 접근자의 범위에 명명된 field 필드를 숨깁니다. 변수의 field 이름을 변경하거나 토큰을 사용하여 @ 식별자를 .로 @field참조 field 할 수 있습니다. 키워드에 대한 field 기능 사양을 읽어 자세히 알아볼 수 있습니다.

대체로 set 접근자는 앞의 예제와 마찬가지로 값을 할당하는 단일 명령문으로 구성됩니다. set 접근자를 식 본문 멤버로 구현할 수 있습니다. 다음 예제에서는 getset 접근자 둘 다를 식 본문 멤버로 구현합니다.

class TimePeriod2
{
    private double _seconds;

    public double Seconds
    {
        get => _seconds;
        set => _seconds = value;
    }
}

다음 예제에서는 Seconds라는 속성의 getset 접근자를 둘 다 정의합니다. _seconds라는 private 필드를 사용하여 속성 값을 지원합니다.

class TimePeriod
{
    private double _seconds;

    public double Seconds
    {
        get { return _seconds; }
        set
        {
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(value), "The value of the time period must be non-negative.");
            }
            _seconds = value;
        }
    }
}

C# 언어 사양

자세한 내용은 C# 언어 사양을 참조하세요. 언어 사양은 C# 구문 및 사용법에 대 한 신뢰할 수 있는 소스 됩니다.

참고 항목