Novidades do C# 9



...

OBS:Este artigo foi revisitado e atualizado dia 14/06/2021 para as adequações do .NET 6!

Falaaaaaa desenvolvedor, tudo na paz? Apesar da pandemia, comigo está ótimo, primeiramente peço desculpas pela leve ausência aqui no blog, estava meio ocupado com questões pessoais, mas não estou aqui pra falar disso e sim da versão 9 da linguagem C#, que finalmente saiu seu primeiro preview juntamente com o .NET 5 que foi anunciado em Maio/2020.

Nessa versão foram adicionadas coisas incríveis e muito úteis na linguagem, vamos ver algumas hoje, como por exemplo:

  1. Uso do IS NOT
  2. SWITCH Com Expressões (Relational Patterns)
  3. Instâncias Simplificadas
  4. Declarações de Nível Superior
  5. Definindo Valores Apenas no Construtor
  6. Record Class

 

Temos bastante coisa para explicar e ver hoje, então chega de falação e bora para o código!

Lembrando que para poder implementar e testar os exemplos a seguir você precisa ter instalado o preview 4 do .NET 5 ou superior:

https://dotnet.microsoft.com/download/dotnet/5.0

E ter o Visual Studio 2019 16.7.0 Preview 1.0

https://visualstudio.microsoft.com/pt-br/vs/preview/

 

 

O operador IS NOT

 

Uma das coisas mais aguardadas nessa versão 9 da linguagem C# e que finalmente foi realmente anunciada é o operador IS NOT, que já era existente em muitas outras linguagens e por fim chegou para nós da comunidade .NET.

A seguir vou deixar um exemplo de como usar o operador:

 

Antes era necessário colocar um operador (!) NOT) para poder inverter o resultado do operador IS, porém com essa feature da linguagem nosso código fica bem mais clean e intuitivo.

 

 

Relational Patterns

 

No C# 9 agora podemos utilizar operadores lógicos (NOT, AND, OR) e operadores relacionais (<, >, >=, <=, ==) podem ser utilizados agora como padrões indicadores, como por exemplo em um SWITCH, que antes só aceitava valores absolutos.

Segue exemplo de SWITCH, utilizando operadores.

 

O novo modo de se fazer switch utilizando C# 9 pode parecer meio estranho a primeira vista (o modo antigo ainda funciona porém não aceita expressões, somente valores exatos), contudo, utilizando os Relational Patterns, conseguimos diminuir a quantidade de IF’s no nosso código, além de ser uma feature muito interessante que consegue também deixar nosso código mais clean.

 

 

Definindo valores apenas no construtor

 

Algumas vezes precisamos que algumas propriedades públicas das nossas classes sejam atribuídas uma vez e depois não sejam mais alteradas, porém como se sabe, hoje uma propriedade pública pode ser atribuída um valor que futuramente pode ser alterado.

Para resolver esse problema o C# 9 veio com uma feature que pode nos ajudar bastante, a propriedade de acesso INIT.

Segue exemplo de uso da propriedade, particularmente uma das features que eu mais gostei.

 

 

Classes Records

 

Deixei esse para o final pois ele é um pouco mais extenso que os outros exemplos e vou tentar explicar pausadamente para um melhor entendimento.

As Records Class ou Classes de Registro são uma nova forma mais simplificada para classes e estruturas em C#, elas simplificam o uso de alguns recursos e a manipulação de dados desses objetos.

À primeira vista parece meio confuso, porém você acaba entendendo com os exemplos que eu irei demonstrar, inclusive vou dividir esse tópico em pequenas partes.

A primeira coisa que vou demonstrar é como criar uma Record Class juntamente com 2 propriedades contendo o operador INIT.

 

Para podermos indicar que é uma record class precisamos colocar o identificar data.

E agora vamos criar uma instância e enviar os dados para outro objeto, alterando somente uma propriedade no novo objeto, lembrando que propriedades marcadas com INIT só podem ser atribuídas o valor na instância de sua classe.

Para podermos alterar o valor imutável em outro objeto podemos utilizar a palavra reservada with, veja no exemplo a seguir.

 

O objetivo das Records Class é ser uma classe imutável com propriedades públicas sendo inicializadas SOMENTE em sua instância e podendo se modificar somente com expressões (o uso do with por exemplo).

Contudo há ainda uma forma mais fácil de criar uma Record Class com as propriedades já com o modificador INIT.

Segue exemplo da mesma Classe Pessoa criada anteriormente de forma simplificada.

 

Uma outra forma de utilizar Record Class é com herança, é bem simples e funciona da mesma forma já demonstrada anteriormente, com o uso da palavra with.

 

Criei um outro objeto que pegou os valores da Record Class imutável pessoaJuridica, mudei o CNPJ e atribui a nova variável pessoa, veja que, nesse exemplo, pessoaJuridica não foi alterada e sim atribuída a outra variável no qual foi realizado uma alteração em sua propriedade utilizando a palavra reservada with.

 

 

Conclusão

 

No artigo de hoje conseguimos ver alguns exemplos do que está por vir no C# 9, muito conteúdo e muitas coisas novas para facilitar a vida do desenvolvedor, lembrando que, todas essas features foram retiradas do anúncio oficial da Microsoft (MSBuild 2020), no qual vou estar deixando o link na íntegra logo abaixo.

Espero que tenha gostado do que está por vir, eu particularmente, adorei as novas coisas e creio que muito em breve já utilizarei boa parte delas em meus projetos pessoais.

Obrigado pela atenção e bons estudos!!

Vou deixar aqui alguns links de artigos que me auxiliaram e dos quais tirei algumas partes desse artigo:

https://channel9.msdn.com/Events/Build/2020/BOD108 - (MS Build 2020 C# 9 na íntegra)

https://dev.to/pushpk/c-9-0-new-features-531h

http://www.macoratti.net/20/02/c_versao9.htm

https://devblogs.microsoft.com/dotnet/announcing-net-5-preview-4-and-our-journey-to-one-net/

 

Caso precise entrar em contato, me mande uma mensagem aqui.