C# Programming

Conversão Robusta de String para Booleano em C#

Spread the love

Sumário

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
}

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *