top of page

O que é a palavra-chave field no C# 13?

O C# 13 trouxe uma nova palavra-chave chamada field, que facilita o acesso ao campo de suporte gerado pelo compilador dentro de propriedades. Com essa novidade, não é mais necessário criar um campo privado manualmente para armazenar o valor da propriedade.


Esse recurso torna o código mais simples e legível, eliminando a necessidade de variáveis adicionais.


Por que usar a palavra-chave field?

Antes do C# 13, ao criar uma propriedade com lógica no get ou set, era necessário declarar um campo privado para armazenar o valor, como no exemplo abaixo:

public class Produto_JeitoAntigo
{
    private decimal _preco;

    public decimal Preco
    {
        get => _preco;
        set => _preco = value >= 0 ? value : throw new ArgumentOutOfRangeException(nameof(value), "O preço não pode ser negativo.");
    }
}

Agora, com o field, podemos acessar diretamente o campo de suporte gerado automaticamente, sem precisar criar _preco manualmente:

public class Produto
{
    public decimal Preco
    {
        get => field;
        set => field = value >= 0 ? value : throw new ArgumentOutOfRangeException(nameof(value), "O preço não pode ser negativo.");
    }
}

Vantagens do field

Código mais limpo – Elimina a necessidade de declarar variáveis privadas para armazenar valores.

Facilidade de manutenção – Reduz a complexidade, tornando as propriedades mais fáceis de entender.

Menos código repetitivo – Não é mais necessário criar manualmente um campo para cada propriedade.


Cuidados ao Usar field

Não pode ser usado fora da propriedade – O field só funciona dentro dos acessadores get e set.

Possível conflito de nomes – Se uma classe já tiver uma variável chamada field, pode ser necessário renomeá-la para evitar conflitos.

Recurso em versão prévia – Esse recurso pode precisar ser ativado no arquivo de configuração do projeto para ser usado (arquivo .csproj).

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <LangVersion>Preview</LangVersion>
  </PropertyGroup>

</Project>

Quando Usar field?

Quando precisar de lógica no get ou set sem criar um campo privado.

Quando quiser reduzir código repetitivo em classes com muitas propriedades.

Quando precisar validar ou modificar valores dentro da propriedade de forma simples.

Esse recurso facilita o desenvolvimento e melhora a legibilidade do código, tornando as propriedades mais intuitivas e organizadas.


Posts recentes

Ver tudo
bottom of page