C#  8.0  -  Static Local Functions


Hoje vou apresentar com mais detalhes o novo recurso static local functions da versão 8.0 da linguagem C#.

Temos muitas novidades na versão 8.0 da linguagem C# e eu já apresentei um resumo das principais neste artigo: C# 8.0 - As novidades da nova versão

O novo recurso das funções estáticas locais permite que você adicione o modificador static às funções locais de forma a garantir que a função local não acesse (ou referencie) quaisquer variáveis do escopo incluído.(definições de métodos, construtores, variáveis, etc.)

Para poder usar os novos recursos basta instalar a última versão do Visual Studio Community 2019 e criar um projeto do tipo Console Application para .NET Core:

A seguir temos um exemplo de código usando a sintaxe do C# 7.0 :

Observe que na função local GetNome() estamos conseguindo acessar as variáveis nome e sobrenome do escopo do método Main() onde declaramos a função local.

Vamos então aplicar a nova sintaxe do C# 8.0, incluindo a palavra static na declaração da função local GetNome():

Observe que temos a mensagem de erro:  A static local function cannot contain a reference to ´nome'.

Pois é assim que o recurso funciona.

Podemos contornar o erro ajustando o código conforme abaixo:

   

Aqui GetNome() pode ser static, e não ocorrem os erros, pois, ela não acessa mais qualquer variável no escopo local.

Concluindo temos que:

Aguarde mais artigos sobre as novidades do C# 8.0.

"Porque o Senhor é justo, e ama a justiça; o seu rosto olha para os retos."
Salmos 11:7

Referências:


José Carlos Macoratti