Analise v. TryParse

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 inteiro é que é implementado sem exceções para que seja rápido. Na verdade, a maneira mais provável é que, internamente, o método Parse chamará TryParse e, em seguida, lançará uma exceção se retornar false .

    Em poucas palavras, 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 () lançará uma exceção
    • int.TryParse () retornará false (mas não jogue uma exceção)

    O método TryParse permite testar se algo é analisável. Se você tentar Analisar como na primeira instância com um int inválido, você receberá uma exceção enquanto no TryParse, ele retornará um booleano informando se a análise foi bem-sucedida ou não.

    Como uma nota de rodapé, passar null para a maioria dos methods TryParse lançará uma exceção.

    TryParse e o imposto de exceção

    Parse lança uma exceção se a conversão de uma seqüência de caracteres para o tipo de dados especificado falhar, enquanto TryParse evita explicitamente lançar uma exceção.

    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).

    Para o registro, eu estou testando dois códigos: Isso simplesmente tenta converter de uma string para um número e se falhar, atribua o número 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 o tryparse porque a alternativa try & Catch lança a exceção

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

    Que é doloroso lento e indesejável, no entanto, o código não pára a menos que a exceção do Debug seja resolvida para parar com ele.

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

    Eu tive um cenário onde DateTime precisa ser convertido em String e se datevalue null ou string.empty estávamos enfrentando uma exceção. Para superar isso, substituímos o Parse por TryParse e obteremos a 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 (“-“); gera uma exceção, enquanto double.TryParse (“-“, out parsed); analisa a 0, então eu acho que TryParse faz conversões mais complexas.