Convertendo string para boolean com segurança em C#2 min de leitura
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):
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:
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:
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 🙂