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 🙂

Deixe um comentário

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