Sumário
- Conversão Booleana Robusta com
bool.TryParse()
- Métodos de Conversão Direta:
bool.Parse()
eConvert.ToBoolean()
- Tratando Diversas Representações de String
Conversão Booleana Robusta com bool.TryParse()
Converter strings para valores booleanos é uma tarefa frequente em C#, particularmente ao processar entrada do usuário ou fontes de dados externas. Strings frequentemente representam implicitamente estados booleanos (“true”, “false”, “1”, “0”). A abordagem mais robusta utiliza o método bool.TryParse()
.
bool.TryParse()
tenta a conversão sem lançar exceções. Retorna true
em caso de sucesso, colocando o valor booleano resultante em um parâmetro out
; caso contrário, retorna false
. Isso permite um tratamento de erros elegante.
string strTrue = "True";
string strFalse = "false";
string invalidString = "hello";
bool result;
if (bool.TryParse(strTrue, out result))
{
Console.WriteLine($"Conversão bem-sucedida: {result}"); // Saída: Conversão bem-sucedida: True
}
else
{
Console.WriteLine("Conversão falhou");
}
if (bool.TryParse(strFalse, out result))
{
Console.WriteLine($"Conversão bem-sucedida: {result}"); // Saída: Conversão bem-sucedida: False
}
else
{
Console.WriteLine("Conversão falhou");
}
if (bool.TryParse(invalidString, out result))
{
Console.WriteLine($"Conversão bem-sucedida: {result}");
}
else
{
Console.WriteLine("Conversão falhou"); // Saída: Conversão falhou
}
Este método é recomendado por sua resiliência a erros, prevenindo travamentos por entradas inesperadas. Você pode tratar falhas de conversão apropriadamente, talvez exibindo mensagens de erro informativas ou usando valores booleanos padrão.
Métodos de Conversão Direta: bool.Parse()
e Convert.ToBoolean()
Enquanto bool.TryParse()
é preferido pela robustez, bool.Parse()
e Convert.ToBoolean()
oferecem alternativas mais concisas, embora menos tolerantes a erros.
bool.Parse()
converte diretamente uma string. Aceita “True”, “False”, “true”, “false”, “1” e “0” (insensibilidade a maiúsculas e minúsculas para “True” e “False”), lançando uma FormatException
para entrada inválida.
string strTrue = "True";
bool boolTrue = bool.Parse(strTrue); // true
Convert.ToBoolean()
se comporta de forma semelhante, mas trata entrada null
retornando false
, evitando uma ArgumentNullException
.
string strNull = null;
bool boolNull = Convert.ToBoolean(strNull); // false
No entanto, ambos os métodos são menos flexíveis e propensos a erros do que bool.TryParse()
para lidar com strings de entrada inesperadas.
Tratando Diversas Representações de String
É crucial considerar como seu aplicativo trata diferentes representações de string de valores booleanos. Embora os métodos discutidos aceitem “true”, “false”, “1” e “0”, você pode encontrar variações como “yes”, “no”, “Y”, “N”, ou mesmo representações personalizadas. Para tais casos, considere adicionar pré-processamento personalizado para normalizar a string de entrada antes da conversão, talvez usando uma instrução switch
ou uma pesquisa em dicionário.
Por exemplo, para acomodar “yes” e “no”:
string input = "yes";
string normalizedInput = input.ToLower();
bool result;
if (normalizedInput == "yes" || normalizedInput == "true" || normalizedInput == "1")
{
result = true;
}
else if (normalizedInput == "no" || normalizedInput == "false" || normalizedInput == "0")
{
result = false;
}
else
{
// Tratar entrada inválida
result = false; // Ou lançar uma exceção
}