Parse
O método Parse
é uma funcionalidade estática presente na maioria dos tipos de valor do C# (como int
, double
, bool
, DateTime
, etc.). Sua função específica é converter a representação em string de um valor em uma instância real daquele tipo.
É a ferramenta ideal quando você tem um texto e precisa que ele se torne um tipo de dado funcional.
O Risco do Parse
: Exceções
O método Parse
é otimista: ele assume que a conversão será bem-sucedida. Se a string de entrada não estiver em um formato válido ou for nula, ele lançará uma exceção, interrompendo o fluxo normal do programa.
FormatException
: A string não corresponde ao formato esperado.ArgumentNullException
: A string fornecida énull
.OverflowException
: O número na string é grande ou pequeno demais para o tipo de destino.
Para usar Parse
de forma segura, você deve envolvê-lo em um bloco try-catch
:
A Alternativa Segura e Eficiente: TryParse
Lançar e capturar exceções é um processo computacionalmente caro. Para cenários de validação (como processar input de um usuário), onde uma falha de conversão é um evento esperado, o C# oferece uma alternativa muito mais eficiente: o padrão TryParse
.
O método TryParse
tenta realizar a conversão e, em vez de lançar uma exceção, ele retorna um bool
que indica se a operação foi bem-sucedida. O valor convertido é retornado através de um parâmetro out
.
Por que TryParse
é melhor?
Performance: Evita o alto custo de criar e gerenciar exceções.
Clareza: O código fica mais limpo e a intenção (validar e converter) é mais clara.
Simplicidade: Permite a validação e a atribuição em uma única linha dentro de uma condição
if
.
Tabela de Referência de Métodos Parse
e TryParse
Abaixo está uma tabela de referência para os métodos Parse
e TryParse
nos tipos mais comuns.
Tipo | Método | Método |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tópico Avançado: Sensibilidade à Cultura
Um detalhe crucial que diferencia um desenvolvedor sênior é o entendimento sobre cultura (CultureInfo
). O método Parse
por padrão utiliza as regras de formatação do sistema operacional onde o código está rodando.
Isso pode causar bugs difíceis de rastrear. Por exemplo, a string "1,234.56"
representa mil duzentos e trinta e quatro em português, mas em inglês o .
é o separador decimal.
O TryParse
também possui sobrecargas que aceitam CultureInfo
para uma conversão segura e culturalmente correta.
Guia de Decisão: Parse
vs. TryParse
Use
Parse
quando:Você tem 100% de certeza que a string é válida (ex: vem de uma fonte interna confiável, como um valor fixo no código ou um banco de dados com dados já validados).
Uma falha na conversão representa um erro excepcional e inesperado no seu sistema.
Use
TryParse
quando:A string vem de uma fonte externa e não confiável (input de usuário, arquivo de texto, resposta de API, etc.).
A falha na conversão é um cenário esperado e faz parte da lógica de validação do seu programa.