DEV Community

Jean Cabral
Jean Cabral

Posted on

Retornando ao C# e explorando as inovações com C# in Depth

Após um período distante da programação e atuando em uma posição de gestão, decidi retomar os estudos de C#. No meu último contato com a linguagem, ela estava na versão 5, em 2014. Desde então, muita coisa mudou no ecossistema .NET, e senti a necessidade de me atualizar, especialmente em um cenário de carreira em Y, onde equilibrar habilidades técnicas e de liderança é essencial.

Neste post, trago um resumo do capítulo 15 do livro C# in Depth de Jon Skeet, um dos grandes nomes da comunidade .NET. Este capítulo aborda as principais inovações do C# 9, lançado em 2020.

Embora a quarta edição do livro cubra até o C# 8 (publicada em 2019), os conceitos apresentados são uma base sólida para entender a evolução da linguagem até versões mais recentes.

Por que voltar ao C#?

Depois de um período na cadeira de gerente, senti uma desconexão com algumas práticas e tecnologias atuais. O avanço rápido da tecnologia exige que, mesmo em posições de liderança, continuemos nos atualizando tecnicamente. Assim, retomar o C# foi uma forma de recuperar a confiança nas ferramentas modernas que estão sendo usadas no mercado e fortalecer minhas habilidades na linguagem.

Principais Funcionalidades do C# 9

O capítulo 15 de C# in Depth foca nas inovações do C# 9 que aprimoram o design de objetos imutáveis e introduzem novos paradigmas, como a programação funcional. Aqui estão as funcionalidades mais relevantes discutidas:

Records: Um novo tipo de referência que facilita a criação de objetos imutáveis, oferecendo igualdade baseada em valor e suporte a "with-expressions". Records são uma ótima escolha quando precisamos de classes que representem dados, com menos verbosidade.

var pessoa1 = new Person("Jean", "Cabral");
var pessoa2 = new Person("Jean", "Cabral");

// Comparação baseada em valor
Console.WriteLine(pessoa1 == pessoa2);  // True

// Uso de with-expressions para copiar com modificações
var pessoa3 = pessoa1 with { LastName = "Gama" };
Console.WriteLine(pessoa3);  // Output: Person { FirstName = Jean, LastName = Gama }

public record Person(string FirstName, string LastName);
Enter fullscreen mode Exit fullscreen mode

Propriedades init-only: Propriedades que só podem ser configuradas durante a inicialização de um objeto. Isso permite um design mais seguro e imutável, reforçando a ideia de que, após criado, o estado do objeto não deve mudar.

public class Product
{
    public string Name { get; init; }
    public decimal Price { get; init; }
}

var product = new Product { Name = "MacBook", Price = 9200.00M };

// O código abaixo gera erro de compilação, pois a propriedade `init` não pode ser alterada após a inicialização
// product.Name = "ThinkPad";
Enter fullscreen mode Exit fullscreen mode

Padrões aprimorados: O C# 9 introduziu novas possibilidades para correspondência de padrões, incluindo padrões lógicos e correspondência em tuplas. Esses recursos melhoram a legibilidade e expressividade do código.

static string GetGroupSizeMessage(int peopleCount) => peopleCount switch
{
    <= 1 => "Poucas pessoas.",
    <= 5 => "Pequeno grupo de pessoas.",
    <= 10 => "Médio grupo de pessoas.",
    _ => "Grande grupo de pessoas."
};

// Padrões lógicos em tuplas
static string ClassifyPerson(string name, int age) => (name, age) switch
{
    (_, < 18) => "Menor",
    _ => "Adulto"
};

Console.WriteLine(GetGroupSizeMessage(3));  // Output: Pequeno grupo de pessoas.
Console.WriteLine(ClassifyPerson("Jean", 40));  // Output: Adulto
Console.WriteLine(ClassifyPerson("Alice", 15));  // Output: Menor
Enter fullscreen mode Exit fullscreen mode

Essas inovações refletem o quanto o C# evoluiu para oferecer mais segurança, concisão e expressividade, alinhando-se às demandas modernas de programação.

Nunca é tarde para aprender algo novo e recomeçar, seja para aprimorar nossas habilidades ou redescobrir a paixão pelo código.

Até breve.

Top comments (0)