.NET Core 3 Preview 3, VS 2019 Release Candidate, Using Declarations no C# 8.0
Já abordei em artigos anteriores novidades envolvendo o .NET Core 3.0, o C# 8.0 e o Visual Studio 2019:
Visual Studio 2019 e .NET Core 3: primeiros testes
Novidades do C# 8.0: como habilitar, Ranges e Indices
Novidades do C# 8.0: Nullable Reference Types
Visual Studio 2019: Preview 2.1 e novidades no debugging de Console Applications
Neste novo artigo dou continuidade a este trabalho, cobrindo novidades mais recentes. Os últimos dias têm sido bastante agitados dentro da comunidade .NET, sobretudo considerando que estamos a menos de 1 mês do lançamento oficial do Visual Studio 2019 (previsto para o início de Abril/2019).
Quarta-feira da semana passada (27/03/2019) foi anunciado o Release Candidate (Preview 4) do Visual Studio 2019:
Posteriormente, mais 2 outras atualizações foram disponibilizadas nos dias 04/03/2019 (segunda) e 06/03/2019 (nesta última quarta-feira). Ambos os updates também integram Preview 4.1 do Visual Studio 2019:
Visual Studio 2019 Preview 4.1 SVC1
Quanto ao .NET Core 3.0, nesta quarta (06/03) foi anunciado o Preview 3 desta versão:
Instalando o Release Candidate do Visual Studio 2019 e o Preview 3 do .NET Core 3.0
Importante ressaltar que a instalação desta versão de avaliação pode ser feita através do Visual Studio Installer, não havendo restrições quanto ao uso da mesma em paralelo com o VS 2017:
No que diz respeito à instalação do Preview 3 do .NET Core 3.0, a mesma pode ser obtida através do seguinte link:
.NET Core 3.0 downloads for Linux, macOS and Windows
Ao se concluir tal processo com sucesso o comando dotnet --version retornará que o Preview 3 foi instalado:
Using Declarations no C# 8.0
Embora traga praticidade e contribua para implementações com menor propensão a erros, a utilização da cláusula using pode fugir do controle e resultar em extensos trechos de código com diversas instruções deste tipo aninhadas uma dentro da outra.
O C# 8.0 conta agora com o recurso conhecido como Using Declarations, em que variáveis podem ser declaradas precedidas pela palavra-chave using e evitando assim extensos blocos aninhados.
E qual seria o comportamento agora, considerando que ao empregar using partimos da premissa que a memória alocada para um objeto (que obrigatoriamente implementa a interface IDisposable) possa ser liberada ao se concluir com êxito ou não o bloco formado por essa instrução? A referência em questão será liberada normalmente (com o compilador gerando automaticamente a chamada a Dispose()) dentro do escopo/bloco em que se encontra tal instrução.
Uma implementação como a detalhada a seguir:
Pode ser substituída pelo código detalhado na próxima listagem, em que:
- Uma primeira instância de SqlConnection foi declarada utilizando explicitamente este tipo e com a palavra-chave using;
- Já a segunda instância de SqlConnection fez uso agora de var, além claro da presença de using.
Para ativar este novo recurso do C# 8.0 foi necessário alterar as propriedades do projeto (uma API REST baseada no ASP.NET Core 3.0), acessando para isto a opção Advanced… seção Build:
Em seguida foi habilitado o uso do C# 8.0 (beta) nas propriedades do projeto:
Na imagem a seguir podemos observar que as Using Declarations foram devidamente reconhecidas, com a aplicação em modo debugging no Visual Studio 2019:
E para concluir este post deixo aqui a gravação do hangout que aconteceu nesta quarta-feira (06/03) no Canal .NET, na qual abordei novidades envolvendo o .NET Core 2.2, o ASP.NET Core 2.2, o .NET Core 3.0, o ASP.NET Core 3.0 e o Visual Studio 2019:
E também o link com o segundo episódio DevShow Podcast, em que foi abordada a migração de softwares legados e o uso de tecnologias como .NET Standard, .NET Core e ASP.NET Core. Ouça no seu app favorito, iTunes, Spotify ou no mesmo no site!