Pergunta

O que é 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 como um try-catch de verificação de erros Block?

Foi útil?

Solução

Parse lança uma exceção se ele não pode analisar o valor, enquanto TryParse retorna um bool indicando se sucedido.

TryParse não apenas try / catch internamente - todo o ponto dele é que ele é implementado sem exceções para que seja rápido. Na verdade, a forma como é mais provável implementado é que internamente o método Parse chamará TryParse e, em seguida, lançar uma exceção se ele retorna false.

Em um Parse poucas palavras, o uso se você tem certeza que o valor será válido; Caso contrário, use TryParse.

Outras dicas

Se a string não pode ser convertida para um número inteiro, então

  • int.Parse() irá lançar uma exceção
  • int.TryParse() retornará false (mas não lançar uma exceção)

O método TryParse permite que você teste se algo é analisável. Se você tentar Parse como no primeiro exemplo com um int inválida, você receberá uma exceção enquanto no TryParse, ele retorna um boolean deixá-lo saber se o parse sucedido ou não.

Como nota de rodapé, passando nulo para a maioria dos métodos TryParse irá lançar uma exceção.

TryParse e a isenção fiscal

Parse lança uma exceção se a conversão de uma string para o tipo de dados especificado falhar, enquanto TryParse evita explicitamente lançar uma exceção.

O TryParse não retornar o valor, ele retorna um código de status para indicar se o parse sucedido (e não lançar uma exceção).

Para o registro, eu estou testando dois códigos:. Isso simplesmente tentar converter a partir de uma string para um número e se ele falhar número depois atribuir a zero

        if (!Int32.TryParse(txt,out tmpint)) {
            tmpint = 0;
        }

e

        try {
            tmpint = Convert.ToInt32(txt);
        } catch (Exception) {
            tmpint = 0;
        }

Para c #, a melhor opção é usar TryParse porque tentativa e captura alternativa jogado a exceção

A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

Isso é doloroso lento e indesejável, no entanto, o código não parar a menos de exceção de depuração são resolvidos para parar com isso.

Eu sei que é um post muito antiga, mas pensei em compartilhar mais alguns detalhes sobre Parse vs TryParse.

Eu tinha um cenário onde DateTime precisa ser convertido para String e se datevalue nulo ou String.Empty estávamos perante uma exceção. Para superar isso, temos substituído Parse com TryParse e terá data padrão.

Código Antigo:

dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");

Novo Código:

DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);

tem que declarar outra variável e usado como Out for TryParse.

double.Parse ( "-"); levanta uma exceção, enquanto Double.TryParse ( "-", fora analisado); Interpreta a 0 então eu acho que TryParse faz conversões mais complexos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top