O operador nameof - C# 6.0
O objetivo deste artigo é apresentar o operador nameof, uma das novas funcionalidades que integram a versão 6.0 da linguagem C#.
** Este post foi elaborado com base em um material publicado através do grupo de usuários .NET Coders, uma das principais comunidades de desenvolvimento no mundo.
*
Introdução
Durante a implementação de uma classe haverá casos nos quais será necessário preencher detalhes de uma ação em um log ou, mesmo, lançar uma exceção em resposta a um estado inválido para um determinado contexto. Em tais situações o ideal será que se registre o maior número possível de informações, de forma a gerar com isto uma base de conhecimento para uso futuro. Um bom detalhamento do que realmente aconteceu contribuirá não apenas para facilitar o monitoramento de uma aplicação, como também será um diferencial na resolução de eventuais problemas.
Dentre as informações que poderão ser registradas estão nomes de elementos como variáveis, propriedades e parâmetros. Embora comum a identificação destes itens por meio de strings, a mudança no nome dos mesmos via refatoração poderá gerar problemas: ações deste gênero são incapazes de atualizar o conteúdo de uma sequência de texto, resultando então na gravação incorreta dos detalhes descrevendo um erro ou situação específica.
Utilizando o operador nameof
O uso do operador nameof seria a solução para o tipo de problema discutido na seção anterior. Este novo recurso permite a obtenção do nome de uma variável (ou outro elemento, como uma propriedade) em tempo de execução, eliminando assim o uso de strings que estariam suscetíveis a erros.
Na próxima listagem está um exemplo de utilização do operador nameof com duas referências do tipo DateTime.
using System;
namespace TesteNameOf
{
class Program
{
static void Main(string[] args)
{
DateTime dataExemplo1 = new DateTime(2014, 11, 01);
DateTime dataExemplo2 = new DateTime(2014, 12, 01);
Console.WriteLine("Variável 1: " + nameof(dataExemplo1));
Console.WriteLine("Variável 2: " + nameof(dataExemplo2));
Console.ReadKey();
}
}
}
O resultado da execução deste bloco de código pode ser observado na imagem seguinte:
Links
C# 6.0 - Novos Recursos (Exemplos)
https://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d
New Language Features in C# 6
https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
.NET Coders – Blog
http://netcoders.com.br/blog/
.NET Coders – Facebook
https://www.facebook.com/groups/netcoders/
.NET Coders – Meetup
http://www.meetup.com/pt/NetCoders/