Hoje veremos como usar atributos em funções locais no C# 9.0. |
O C# 9 agora permite atributos em funções locais (bem como atributos de parâmetro de funções locais).
Dessa forma
atributos com um significado especificado quando aplicados a um método, seus
parâmetros ou seus parâmetros de tipo terão o mesmo significado quando aplicados
a uma função local, seus parâmetros ou seus parâmetros de tipo, respectivamente.
Uma função local pode se tornar condicional no mesmo sentido que
um método condicional, decorando-a com um atributo [ConditionalAttribute].
Lembrando que uma função local condicional também deve ser estática.
Todas as restrições sobre métodos condicionais também se aplicam a funções locais condicionais, incluindo que o tipo de retorno deve ser nulo.
Para ilustrar isso, veremos um exemplo de como usar o atributo Conditional para realizar execuções de funções locais condicionais dependendo do ambiente em que estamos executando nosso programa.
Neste exemplo, veremos como executar uma função local em relação ao ambiente de execução.
Vamos considerar que estamos executando uma ação apenas no modo DEBUG, e para isso temos que executá-la com o pré-processador #if :
A seguir o código usando uma versão anterior ao C# 9.0 :
using System;
namespace Demo
{
class Program
{
private static void Main(string[] args)
{
static void ExecutarOperacao()
{
Console.WriteLine("Executando a operação");
}
#if DEBUG
ExecutarOperacao();
#endif
}
}
}
|
Aqui não podemos usar o atributo [Conditional (“DEBUG”)] pois estamos usando a versão do C# 8.0 que não suporta atributos em funções locais.
Agora vejamos o código usando o C# 9.0 e o atributo [Conditional] aplicado à função local:
using System;
using System.Diagnostics;
namespace Demo
{
class Program
{
private static void Main(string[] args)
{
[Conditional("DEBUG")]
static void ExecutarOperacao()
{
Console.WriteLine("Executando a operação");
}
ExecutarOperacao();
}
}
}
|
Executando o código vamos constatar que a execução do método vai ser feita apenas no modo DEBUG.
"Porque Deus
não nos destinou para a ira, mas para a aquisição da salvação, por nosso Senhor
Jesus Cristo,
Que morreu por nós, para que, quer vigiemos, quer durmamos, vivamos juntamente
com ele."
1 Tessalonicenses
5:9,10
Referências:
ADO .NET - Acesso Assíncrono aos dados
C# - Programação Funcional - Exemplos
C# - Coleções Imutáveis
C# 9.0 - Apresentando Records
C# - Os 10 Erros mais comuns dos iniciantes
C# - Otimizando o código