Quem programa e trabalha com acesso a banco de dados, já deve ter se deparado…
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