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.

Top comments (0)