Retornando ao C# e explorando as inovações com C# in Depth
Jean Cabral
Posted on September 27, 2024
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);
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";
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
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.
Posted on September 27, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.