Qual é a diferença entre Parse () e TryParse ()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Existe alguma forma de verificação de erros, como um bloco Try-Catch?
Parse
lança uma exceção se não puder analisar o valor, enquanto TryParse
retorna um bool
indicando se foi bem-sucedido.
TryParse
não apenas try
/ catch
internamente - o ponto principal disso é que ele é implementado sem exceções para que seja rápido. Na verdade, a maneira mais provável de ser implementado é que internamente o Parse
método chamará TryParse
e lançará uma exceção se retornar false
.
Resumindo, use Parse
se tiver certeza de que o valor será válido; caso contrário, use TryParse
.
Se a string não puder ser convertida em um inteiro, então
int.Parse()
vai lançar uma exceçãoint.TryParse()
retornará falso (mas não lançará uma exceção)fonte
O método TryParse permite que você teste se algo é analisável. Se você tentar o Parse como na primeira instância com um int inválido, você obterá uma exceção enquanto no TryParse, ele retorna um booleano permitindo que você saiba se a análise foi bem-sucedida ou não.
Como nota de rodapé, passar null para a maioria dos métodos TryParse lançará uma exceção.
fonte
TryParse e o imposto de exceção
O Parse lança uma exceção se a conversão de uma string para o tipo de dados especificado falhar, enquanto o TryParse evita explicitamente o lançamento de uma exceção.
fonte
TryParse não retorna o valor, ele retorna um código de status para indicar se a análise foi bem-sucedida (e não lança uma exceção).
fonte
Para que conste, estou testando dois códigos: Que simplesmente tentam converter de uma string em um número e, se falhar, atribua o número zero.
e:
Para c #, a melhor opção é usar tryparse porque a alternativa try & Catch lançou a exceção
Por ser dolorosamente lento e indesejável, no entanto, o código não para, a menos que a exceção de Debug seja encerrada com ela.
fonte
Eu sei que é um post muito antigo, mas pensei em compartilhar mais alguns detalhes sobre o Parse vs TryParse.
Tive um cenário em que DateTime precisa ser convertido em String e se datevalue null ou string.empty estávamos diante de uma exceção. Para superar isso, substituímos o Parse por TryParse e obteremos a data padrão.
Código Antigo:
Novo Código:
Tem que declarar outra variável e usada como Out para TryParse.
fonte
startDate
e,endDate
comoDateTime.TryParse
sempre, os substituirá porDateTime.MinValue
. Se as representações de data incorretas devem ser convertidas em um valor diferente, verifique o valor de retorno deDateTime.TryParse
e se for falso, defina o valor explicitamente.DateTime?
( DateTime nullable )double.Parse ("-"); levanta uma exceção, enquanto double.TryParse ("-", out parsed); analisa para 0, então acho que TryParse faz conversões mais complexas.
fonte
TryParse
retornatrue
oufalse
? É assim que você saberá se era "válido".