csharp7-binary-digit-00
Embora ainda se encontre em fase de implementação e apresente funcionalidades passando pela fase de especificação/prototipação, algumas das novidades do C# 7 já estão disponíveis para testes no Visual Studio “15”.

Num post anterior iniciei uma série sobre as novidades da linguagem, abordando em detalhes o uso do recurso chamado Pattern Matching. Neste novo artigo serão descritas duas novas funcionalidades que integram o C# 7: Binary Literals e Digit Separators.

Para os exemplos descritos neste artigo foram utilizados projetos do tipo “Console Application” no Preview 2 do Visual Studio “15”, com os mesmos se baseando na versão 4.6.1 do .NET Framework.

Configurando o uso do C# 7 no Visual Studio “15”

O download desta versão do Visual Studio pode ser realizado através do seguinte link:

https://www.visualstudio.com/en-us/news/releasenotes/vs15/vs15-relnotes

Nas duas aplicações de exemplo foi necessário configurar o uso do C# 7. Tal ajuste deve ser feito a partir da seção “Build”, dentro das propriedades de cada projeto. No campo “Conditional compilation symbols” (Imagem 1) será preciso incluir então o valor __DEMO__.

csharp7-binary-digit-01
Imagem 1. Configurando um projeto para uso do C# 7

Versões anteriores do C# possibilitavam a declaração de valores numéricos no formato hexadecimal (recurso conhecido como “Hexadecimal Literals”), com tais representação sendo precedidas por “0x” ou “0X” como demonstrado na Listagem 1:

...

private const int LETRA_Y_HEX = 0x59; // 59 (hexadecimal) = 79 (decimal)
private const int LETRA_Z_HEX = 0X5A; // 5A (hexadecimal) = 80 (decimal)

...

Listagem 1: Hexadecimal Literals

O C# 7 traz também a possibilidade de se declarar valores no padrão binário, recurso este chamado “Binary Literals”. Na Listagem 2 encontra-se um exemplo de uso desta opção, com os valores binários sendo antecedidos por “0b” ou “0B”:

using System;

namespace TesteBinaryLiterals
{
    class Program
    {
        private const int LETRA_Y_BIN = 0b01011001; // 01011001 (binário) = 89 (decimal)
        private const int LETRA_Z_BIN = 0B01011010; // 01011010 (binário) = 90 (decimal)

        static void Main(string[] args)
        {
            Console.WriteLine("Valor numérico de alguns caracteres ASCII");
            Console.WriteLine($"Y = {LETRA_Y_BIN}");
            Console.WriteLine($"Z = {LETRA_Z_BIN}");
            Console.ReadKey();
        }
    }
}

Listagem 2: Binary Literals

O resultado da execução deste trecho de código pode ser observado na Imagem 2:

csharp7-binary-digit-02

Digit Separators

Ao representar números extensos é comum que se utilizem separadores, de forma a tornar mais legível a visualização dos mesmos. O recurso do C# 7 chamado “Digit Separator” tem essa função, fazendo uso para isto do caracter “_” (underline) na separação de sequências de algarismos.

Na Listagem 3 é possível observar o uso deste tipo de separador com valores binários, hexadecimais, inteiros e dotados de casas decimais:

using System;

namespace TesteDigitSeparators
{
    class Program
    {
        private const int LETRA_Y_BIN = 0b01_01_10_01; // 01011001 (binário) = 89 (decimal)
        private const int LETRA_Z_HEX = 0X5A; // 5A (hexadecimal) = 80 (decimal)
        private const int POPULACAO_ESTIMADA_BRASIL = 204_500_000;
        private const double RENDA_PER_CAPITA_BRASIL_USD = 11_208.08;

        static void Main(string[] args)
        {
            Console.WriteLine("Valor numérico de alguns caracteres ASCII");
            Console.WriteLine($"Y = {LETRA_Y_BIN}");
            Console.WriteLine($"Z = {LETRA_Z_HEX}");
            Console.WriteLine(String.Empty);
            Console.WriteLine($"População estimada do Brasil = {POPULACAO_ESTIMADA_BRASIL}");
            Console.WriteLine($"Renda per capita do Brasil (US$) = {RENDA_PER_CAPITA_BRASIL_USD}");
            Console.ReadKey();
        }
    }
}

Listagem 3: Utilizando Digit Separators

Ao executar este conjunto de instruções será exibido um resultado similar ao da Imagem 3:

csharp7-binary-digit-03
Imagem 3. Exemplo de utilização de Digit Separators

Conclusão

Recursos como Digit Separators e Binary Literals foram projetados com o intuito de simplificar a manipulação de valores numéricos, conforme demonstrado nos exemplos abordados por este artigo. Outras funcionalidades que integram o C# 7 serão abordadas em futuros posts desta série.

Espero que este conteúdo possa ter sido útil.

Até uma próxima oportunidade!

Referências

The Future of C# – Build 2016
https://channel9.msdn.com/Events/Build/2016/B889

Renato Groffe

Atua como consultor em atividades voltadas ao desenvolvimento de softwares há mais de 13 anos. Bacharel em Sistemas de Informação, com especialização em Engenharia de Software. Microsoft Certified Technology Specialist (Web, WCF, Distributed Applications, ADO.NET, Windows Forms), Microsoft Specialist (HTML5 with JavaScript and CSS3, Developing ASP.NET MVC 4 Web Applications), Oracle Certified Associate (PL/SQL), Sun Certified (SCJP, SCWCD), ITIL Foundation V2, Cobit 4.1 Foundation.

Facebook Google+ 

Comentários

comentarios