DEV Community

Cover image for Simplificando Inicializações com Structs com Auto-Default no C# 11
Lincoln Quinan Junior
Lincoln Quinan Junior

Posted on

Simplificando Inicializações com Structs com Auto-Default no C# 11

Avançando na nossa série sobre as inovações do C# 11, hoje vamos abordar uma mudança sutil, mas muito bem-vinda para os desenvolvedores que trabalham com tipos de valor: a introdução de structs com auto-default. Esse recurso simplifica o trabalho com structs ao eliminar a necessidade de definir um construtor padrão para inicializar campos com valores padrão.

O Benefício dos Structs com Auto-Default

Structs são uma parte essencial da linguagem C#, oferecendo uma maneira eficiente de agrupar dados relacionados quando não é necessário o overhead de um objeto de classe. No entanto, a inicialização desses tipos poderia, até agora, exigir a definição explícita de um construtor padrão, especialmente quando se queria garantir que todos os campos fossem inicializados com valores específicos. Com a chegada do C# 11, essa necessidade desaparece, pois os structs são automaticamente capazes de inicializar seus campos com valores padrão.

Exemplo 1: Definição Simples de Struct

public struct Coordenadas
{
    public double Latitude;
    public double Longitude;
    // Campos são automaticamente inicializados com 0
}
Enter fullscreen mode Exit fullscreen mode

Aqui, Coordenadas é um struct que, sem a necessidade de um construtor padrão explícito, tem seus campos Latitude e Longitude automaticamente inicializados com 0.

Exemplo 2: Uso de Struct Auto-Default

var localizacao = new Coordenadas();
Console.WriteLine($"Latitude: {localizacao.Latitude}, Longitude: {localizacao.Longitude}");
Enter fullscreen mode Exit fullscreen mode

Neste exemplo, ao instanciar Coordenadas, Latitude e Longitude são automaticamente definidos para 0, demonstrando como o struct com auto-default facilita a criação de instâncias sem inicializações adicionais.

Exemplo 3: Comparação com Classes

Para compreender a vantagem, considere o caso de uma classe similar:

public class Ponto
{
    public int X { get; set; }
    public int Y { get; set; }
    // Necessário inicializar explicitamente no construtor ou esperar a inicialização automática para propriedades auto-implementadas
}
Enter fullscreen mode Exit fullscreen mode

Com classes, os campos ou propriedades não inicializados explicitamente em um construtor são definidos para seus valores padrão, mas o mesmo nível de clareza e simplicidade não estava disponível para structs até o C# 11.

Exemplo 4: Estruturas Mais Complexas

public struct Informacoes
{
    public string Nome;
    public int Idade;
    // Nome é inicializado com null (ou a representação padrão de string em C# 8.0+ com tipos anuláveis referência habilitados) e Idade com 0
}
Enter fullscreen mode Exit fullscreen mode

Este exemplo mostra que, mesmo para tipos mais complexos que incluem strings ou outros tipos de referência, os structs com auto-default garantem que todos os campos sejam inicializados de forma adequada, reduzindo a chance de erros.

Conclusão

A introdução de structs com auto-default no C# 11 é um exemplo claro de como melhorias aparentemente pequenas podem ter um impacto significativo na experiência de desenvolvimento. Este recurso não apenas simplifica a definição e uso de structs, mas também promove práticas de codificação mais seguras, garantindo que os campos sejam inicializados corretamente sem esforço adicional.

Ao continuar explorando as novidades do C# 11, fica evidente o comprometimento contínuo com a evolução da linguagem, buscando sempre oferecer recursos que facilitam o trabalho dos desenvolvedores e melhoram a qualidade do código produzido.

Fique atento para mais artigos desta série, onde mergulharemos em outras funcionalidades excitantes do C# 11 e como elas podem ser aplicadas para tornar seus projetos ainda melhores.

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay