Partilhar via


A palavra-chave set (Referência C#)

A set palavra-chave define um método accessor em uma propriedade ou indexador que atribui um valor à propriedade ou ao elemento indexador. Para obter mais informações e exemplos, consulte Propriedades, Propriedades implementadas automaticamente e Indexadores.

Para casos simples em que os acessadores e set uma get propriedade não executam outra operação além de definir ou recuperar um valor em um campo de suporte privado, você pode usar propriedades implementadas automaticamente. O exemplo a seguir implementa como uma propriedade implementada Hours automaticamente.

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

Importante

As propriedades implementadas automaticamente não são permitidas para declarações de propriedade de interface ou a declaração de implementação para uma propriedade parcial. O compilador interpreta a sintaxe que corresponde a uma propriedade implementada automaticamente como a declaração de declaração, não como uma declaração de implementação.

Você pode achar que precisa implementar um dos órgãos de acesso. A field palavra-chave, adicionada como um recurso de visualização no C# 13, declara uma propriedade com suporte de campo. Você pode usar uma propriedade apoiada por campo para permitir que o compilador gere um acessador enquanto você escreve o outro manualmente. Use a field palavra-chave para acessar o campo de suporte sintetizado do compilador:

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

Importante

A field palavra-chave é um recurso de visualização em C# 13. Você deve estar usando o .NET 9 e definir seu <LangVersion> elemento como preview em seu arquivo de projeto para usar a field palavra-chave contextual.

Você deve ter cuidado ao usar o recurso de field palavra-chave em uma classe que tem um campo chamado field. A nova field palavra-chave sombreia um campo nomeado field no escopo de um acessador de propriedade. Você pode alterar o nome da field variável ou usar o @ token para fazer referência ao field identificador como @field. Você pode saber mais lendo a especificação do recurso para a field palavra-chave.

Muitas vezes, o set acessador consiste em uma única instrução que atribui um valor, como fez no exemplo anterior. Você pode implementar o set acessador como um membro com corpo de expressão. O exemplo a seguir implementa os get e os set acessadores como membros com corpo de expressão.

class TimePeriod2
{
    private double _seconds;

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

O exemplo a seguir define um get e um set acessador para uma propriedade chamada Seconds. Ele usa um campo privado nomeado _seconds para apoiar o valor da propriedade.

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;
        }
    }
}

Especificação da linguagem C#

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso do C#.

Consulte também