Promoção no ar
Tempo restante da oferta:
00 Horas
59 Min
01 Seg
Assinar →

Binary Literals, Digit Separators e Throw Expressions no C# 7.0

Conheça os recursos Binary Literals, Digit Separators e Throw Expressions da versão 7 do C#.

Wladimilson M. Nascimento 10 anos atrás

Dando continuidade à série de artigos sobre novidades do C# 7, hoje conheceremos três novos recursos que melhoram a legibilidade e reduzem o número de linhas de código:

  • Binary Literals;
  • Digit Separators;
  • Throw Expressions.

Curso C# (C Sharp) Básico Conhecer o curso

Binary Literals

Este recurso seria adicionado no C# 6.0 mas, no final, foi decidido que só entraria na versão 7. Como o nome indica, ele permite declarar valores binários como literais.

Para fazer isso, basta utilizar o prefixo 0b:

byte var1 = 0b00011011;
byte var2 = 0b10101010;
ushort var3 = 0b111001011010000;
Console.WriteLine($"{var1:X}");
Console.WriteLine($"{var2:X}");
Console.WriteLine($"{var3:X}");

Ele torna mais simples trabalhar com valores binários no código. Mesmo não sendo algo muito comum, agora não é mais necessário trabalhar com as versões em decimais dos valores binários. O que melhora a legibilidade do código.

Digit Separators

Ainda no quesito de melhorar a legibilidade, agora na versão 7, o C# permite que se utilize o underline (_) como digito separador de um valor numérico literal.

No lugar de definir um valor assim:

int var1 = 1234567891011;

Ele pode ser definido da seguinte forma:

int var1 = 1_234_567_891_011;

Isso também pode ser aplicado a valores binários:

ushort var1 = 0b0001_1011_1100_0001;

Ou hexadecimais:

ulong l2 = 0xfedc_ba98_7654_3210;

E o digito separador tem importância apenas visual, portanto, ele pode ser definido de qualquer forma no valor que será interpretado da mesma forma pelo C#:

int var1 = 1_2345_6789_1011;
ushort var1 = 0b000_110_111_100_000_1;
ulong l2 = 0xfe_dc_ba_98_76_54_32_10;

Throw Expressions

Por fim, temos um recurso chamado throw expressions, que permite reduzir a quantidade de linhas do código.

Até a versão 6, quando era necessário gerar uma exceção a partir do valor de um retorno, era necessário realizar o procedimento abaixo:

public class Pessoa
{
    private int _idade;
 
    public int Idade
    {
        get
        {
            return _idade;
        }
        set
        {
            if (value > 0)
                _idade = value;
            else
                throw new Exception("Idade inválida!");
        }
    }
}

Como a cláusula throw não podia ser utilizada em expressões que retornam valores, o seu uso em situações acima, estava atrelado a uma condicional. Mas, na versão 7.0, com o recurso throw expression, é possível lançar exceções a partir do código que define uma expressão. Assim, o mesmo código acima pode ser refeito para:

public class Pessoa
{
    private int _idade;
 
    public int Idade
    {
        get
        {
            return _idade;
        }
        set
        {
            _idade = value > 0 ? value : throw new Exception("Idade inválida!");
        }
    }
}

Teremos o mesmo resultado do código anterior.

Este recurso pode ser combinado com o recurso Expression-bodied Members, para gerar um resultado ainda mais enxuto:

public class Pessoa
{
    private int _idade;
 
    public int Idade
    {
        get => _idade;
        set => _idade = value > 0 ? value : throw new Exception("Idade inválida!");
    }
}

Conclusão

Apesar de serem recursos que modificam pequenos detalhes da linguagem, seus usos são recomendados pois melhoram a qualidade do código. Então, sempre que possível procure utilizá-los.

Curso C# (C Sharp) Avançado Conhecer o curso

Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 00h 59min 01s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora