A palavra-chave set (Referência de C#)
A palavra-chave set
define um método acessador em uma propriedade ou indexador que atribui um valor ao elemento da propriedade ou do elemento. Para obter mais informações e exemplos, consulte Propriedades, Propriedades implementadas automaticamente e Indexadores.
Para casos simples em que uma propriedade get
e set
acessadores não executam nenhuma 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 é implementado 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 de uma propriedade parcial. O compilador interpreta a sintaxe correspondente a uma propriedade implementada automaticamente como a declaração de declaração, não uma declaração de implementação.
Você pode achar que precisa implementar um dos corpos do acessador. 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 com suporte de 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 no C# 13. Você deve estar usando o .NET 9 e definir seu <LangVersion>
elemento como preview
no 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 tenha 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.
Geralmente, o acessador set
consiste em uma única instrução que retorna um valor, como no exemplo anterior. Você pode implementar o acessador set
como um membro apto para expressão. O exemplo a seguir implementa os acessadores get
e set
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 acessador get
e um acessador set
para uma propriedade chamada Seconds
. Ela usa um campo particular chamado _seconds
para dar suporte ao 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 de C#.