Convertendo string para boolean com segurança em C#2 min read

Categoria: C#

Fala devs! Você sabia que você pode converter uma string para boolean de forma segura e sem precisar de usar try…catch? Esse é um recurso muito útil na linguagem C# que deve ser usado nos casos em que você não sabe se a string a ser convertida terá um valor possível de ser convertido para true ou false.

Cenário de estudo

Para converter uma string para o tipo boolean você precisa ter uma string com valor “true” ou “false”. Qualquer valor diferente um erro (exceção) será retornado. Dito isto, vamos ao cenário do nosso exemplo:

Imagine que você tem uma variável que indica se existe um parâmetro está ligado ou não. Este parâmetro está vindo com valores “true” (string), “false” (string) ou vazio/null. Se você for converter utilizando a classe Convert., por exemplo, você teria que fazer algo parecido com isso para que sua conversão fosse feita de forma segura (sem correr o risco de acontecer uma exceção):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
                     
public class Program
{
    public static void Main()
    {
        var parametroLigado = "true";
        var ligado = Convert.ToBoolean(parametroLigado);
         
        if (ligado)
            Console.WriteLine("Parâmetro ligado");
        else
            Console.WriteLine("Parâmetro desligado");
    }
}

Porém, implementado a conversão desta forma, caso a variável parametroLigado, esteja com um valor vazio, por exemplo, uma exception será lançada:

1
2
3
4
5
6
7
8
Run-time exception (line 8): String was not recognized as a valid Boolean.
 
Stack Trace:
 
[System.FormatException: String was not recognized as a valid Boolean.]
   at System.Boolean.Parse(String value)
   at System.Convert.ToBoolean(String value)
   at Program.Main() :line 8

Usando bool.TryParse

Utilizando o método TryParse você não precisa se preocupar com valores de entradas errados/inesperados para um conversão do tipo boolean. Abaixo, veja o mesmo código acima reescrito para usar o método TryParse:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
                     
public class Program
{
    public static void Main()
    {
        var ligado = false;
        var parametroLigado = "true";      
        bool.TryParse(parametroLigado, out ligado);
         
        if (ligado)
            Console.WriteLine("Parâmetro ligado");
        else
            Console.WriteLine("Parâmetro desligado");
    }
}

Veja, que foi necessário declarar e inicializar a variável ligado, que posteriormente é utilizada como uma variável de referência no segundo parâmetro do método TryParse.

Agora, se você tiver um valor vazio na string da variável parametroLigado a variável ligado ,que foi passada por referência, terá seu valor false (boolean) e o código não retornará nenhum error 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *