O CSharp (C#) está bem próximo de ser lançado, sendo previsto para o lançamento novas funcionalidades dentro da linguagem. Neste artigo irei demonstrar a funcionalidade required member, que permite que obrigue um membro a ser declarado dentro de sua classe. Vale lembrar que, se não preparou seu ambiente de desenvolvimento ainda para as novas features
O CSharp (C#) está bem próximo de ser lançado, sendo previsto para o lançamento novas funcionalidades dentro da linguagem.
Neste artigo irei demonstrar a funcionalidade required member, que permite que obrigue um membro a ser declarado dentro de sua classe.
Vale lembrar que, se não preparou seu ambiente de desenvolvimento ainda para as novas features do .NET 7, recomendo que leia este artigo antes de iniciar.
Vale lembrar que, como mencionei anteriormente, estes itens estão ainda em uma versão prévia e é possível que alguns deles não cheguem à versão final do C# 11.
Porém, isto nos dá uma noção do que pode ser a próxima versão do C# e o que esperar.
Membros Required (Required Members)
O modificador required pode ser utilizado em um membro de nossa classe ou propriedade para garantir que definimos explicitamente um valor quando inicializarmos um objeto.
A palavra reservada required adicionamos depois do modificador de acesso (public, private, etc).
public class FeatureOneRequiredMember
{
public required string AttributeOne { get; set; }
}
Quando inicializamos o objeto, devemos garantis que definimos um valor para essa propriedade, caso contrário, um erro de compilação será gerado. Veja como fica:
var featureOneRequiredMember = new FeatureOneRequiredMember()
{
AttributeOne = "Some value"
};
Caso você não inicialize a propriedade, irá visualizar o seguinte erro:

Você também pode inicializar um membro required dentro do seu construtor, sem dificuldades. Porém, teremos um passo adicional para isto.
Só para entender, se passarmos a propriedade requerida como parâmetro no construtor, isto irá nos gerar um erro de compilação. Veja o exemplo:
public class FeatureOneRequiredMemberErrorConstructor
{
public required string AttributeOne { get; set; }
public FeatureOneRequiredMemberErrorConstructor(string attributeOne)
{
this.AttributeOne = attributeOne;
}
}
//irá causar um erro de compilação
var featureOneRequiredMemberErrorConstructor = new FeatureOneRequiredMemberErrorConstructor("teste");
Veja o que ocorre ao declarar o código acima:

Para resolver isto (note que até o Visual Studio nos dá uma pista do que está ocorrendo), devemos definir o atributo [SetsRequiredMember] acima do construtor.
Isto informa ao compilador que estamos configurando os membros necessários dentro do construtor.
[SetsRequiredMembers]
public FeatureOneRequiredMemberErrorConstructor(string attributeOne)
{
this.AttributeOne = attributeOne;
}
Este exemplo coloquei no GitHub e caso queira baixar para facilitar seus estudos, é só baixar pelo link NET7 Preview Features – Required Member.
Leave a Comment
Your email address will not be published. Required fields are marked with *