Binary Literals, Digit Separators e Throw Expressions no C# 7.0 \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 00 Horas 

 59 Min 

 01 Seg 

   Tempo restante da oferta: 00 59 01 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Binary Literals, Digit Separators e Throw Expressions no C# 7.0  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

# 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 ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 10 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/img-wlad-blog.jpg)  

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**.

[  ![C# (C Sharp) Básico](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Básico Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-basico)

## 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**:

```csharp
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:

```csharp
int var1 = 1234567891011;

```

Ele pode ser definido da seguinte forma:

```csharp
int var1 = 1_234_567_891_011;

```

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

```csharp
ushort var1 = 0b0001_1011_1100_0001;

```

Ou hexadecimais:

```csharp
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#:

```csharp
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:

```csharp
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:

```csharp
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](https://www.treinaweb.com.br/blog/as-mudancas-de-expression-bodied-members-no-csharp-7/)**, para gerar um resultado ainda mais enxuto:

```csharp
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.

[  ![C# (C Sharp) Avançado](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Avançado Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-avancado)

- [ #C ](https://www.treinaweb.com.br/blog/tag/c)
- [ #Desenvolvimento ](https://www.treinaweb.com.br/blog/tag/desenvolvimento)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/06/bits-bytes-e-unidades-de-medida-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ Bits, bytes e unidades de medida ](https://www.treinaweb.com.br/blog/bits-bytes-e-unidades-de-medida) 

     Tudo o que fazemos em um computador é processado numa sequência de zeros e uns (sistema binário). Veja mais sobre bits, bytes e unidades de medida.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/c-sharp-consumindo-apis-com-flurl-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ C# - Testando requisições com Flurl ](https://www.treinaweb.com.br/blog/c-testando-requisicoes-com-flurl) 

     Implemente testes unitários em requisições HTTP com o auxílio de Flurl.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/c-sharp-consumindo-apis-com-flurl-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ C# - Consumindo APIs com Flurl ](https://www.treinaweb.com.br/blog/c-consumindo-apis-com-flurl) 

     Veja como consumir dados de uma API no C#, utilizando a biblioteca Flurl.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/C-SHARP-PROPRIEDADES-INIT-RECORD-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ C# 9.0 - Inteiros nativos e inferência de tipos ](https://www.treinaweb.com.br/blog/c-9-0-inteiros-nativos-e-inferencia-de-tipos) 

     Conheça os novos tipos de dados introduzidos no C# 9.0, os inteiros nativos e os novos recursos da inferência de tipos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/C-SHARP-PROPRIEDADES-INIT-RECORD-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ C# 9.0 - Programas top-level e Pattern Matching ](https://www.treinaweb.com.br/blog/c-9-0-programas-top-level-e-pattern-matching) 

     Dando continuidade ao nosso estudo do C# 9.0, neste artigo veremos dois novos recursos dele: Programas top-leve e Pattern Matching.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/C-SHARP-PROPRIEDADES-INIT-RECORD-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ C# 9.0 - Propriedades init e record ](https://www.treinaweb.com.br/blog/c-9-0-propriedades-init-e-record) 

     Já estamos no C# 9.0, a nova versão lançada no .NET Conf 2020 trouxe uma série de novos recursos, veja neste artigo dois deles: propriedades init e record.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/11/Clean-Architecture-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     3 anos atrás

    ##  [ O que vem a ser a Clean Architecture? ](https://www.treinaweb.com.br/blog/o-que-vem-a-ser-a-clean-architecture) 

     Confira nesse artigo uma introdução do que é a Clean Architecture, quais seus componentes e os benefícios ao utilizar essa arquitetura.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/12/CAPA-PYTHON-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Como trabalhar com data e hora no Python ](https://www.treinaweb.com.br/blog/como-trabalhar-com-data-e-hora-no-python) 

     Como trabalhar com data e hora no Python com Datetime. No decorrer deste artigo, veremos exemplos de como utilizar o módulo datetime...

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Como instalar a Golang e executar nosso primeiro exemplo ](https://www.treinaweb.com.br/blog/como-instalar-a-golang-e-executar-nosso-primeiro-exemplo) 

     Neste artigo iremos aprender como instalar a Golang nos sistemas Windows, Linux e macOS e como executar nosso primeiro exemplo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/DESENOLVEDOR-MOBILE-INVESTIR-CARREIRA-400x280.png)  [ Desenvolvimento Mobile ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-mobile) 

     4 anos atrás

    ##  [ Desenvolvedor mobile: por que investir nessa carreira? ](https://www.treinaweb.com.br/blog/desenvolvedor-mobile-por-que-investir-nessa-carreira) 

     Carreira mobile tem muitas oportunidades, por isso vamos ver o que você precisa saber para entrar ou migrar para essa área tão promissora.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     5 anos atrás

    ##  [ Conhecendo variáveis e constantes no C# ](https://www.treinaweb.com.br/blog/conhecendo-variaveis-e-constantes-no-csharp) 

     Conheça neste artigo os tipos de dados presentes no C# e a sintaxe para que possamos declarar variáveis e constantes.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     5 anos atrás

    ##  [ Como instalar o C# e nosso primeiro exemplo ](https://www.treinaweb.com.br/blog/como-instalar-o-csharp-e-nosso-primeiro-exemplo) 

     Neste artigo veremos como instalar o C# nos sistemas Windows, Linux e MacOS e também veremos como escrever nosso primeiro programa.

     Ler artigo

## 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](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
