Compartilhar via


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:

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/