Caique Dourado

Conversão de Tipos – Convert x Parse

por Caique Dourado em dez.09, 2007, para .NET, ASP.NET, Artigos, C#

Esse artigo tem o objetivo de comparar a utilização dos métodos Convert e Parse, comuns aos tipos do .NET Framework. A maioria dos desenvolvedores costuma utilizar o Convert. Eu também não fujo a regra.

Utilizaremos um utilitário para realizar a reflexão nos métodos e comparar as diferenças entre os dois. Segue como dica o Reflector.NET indicado pelo Eduardo Miranda na 5° edição da revista Mundo.net

Vamos tomar como exemplo a conversão de uma String em um objeto do tipo Int32. Para realizar a conversão poderemos utilizar Convert.ToInt32 ou Int32.Parse. Confira as imagens abaixo:

Convert.ToInt32

convert_x_parse_1

public static int ToInt32(string value)
{
if (value == null)
{
return 0;
}
return int.Parse(value, CultureInfo.CurrentCulture);
}

Int32.Parse

convert_x_parse_2

public static int Parse(string s)
{
return Number.ParseInt32(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo);
}

Repare que ao utilizar o “Convert” o valor é testado e logo após é passado para o método “Parse”.

if (value == null)
{
return 0;
}
return int.Parse(value, CultureInfo.CurrentCulture);

O teste acontece para assegurar que o parâmetro não receba null e uma exceção seja disparada. Se o parâmetro for nulo a função retorna 0 (zero) se não, passa o parâmetro para o método Parse.

Você deve estar se perguntando; “Se ao utilizar o Convert o método Parse também é chamado, seria melhor utilizar logo o Parse, não?” O Parse de fato é mais rápido, pois não testa antes se o valor é nulo. É claro que se assegurarmos que o parâmetro nunca receba null será desnecessário utilizar o Convert pois um if a mais estará sendo executado.

A mesma regra vale para a conversão de outros tipos do .NET como Char, String, bool…

:, ,

2 Comentários para esta entrada

Deixe uma resposta

Você deve estar autenticado para postar um comentário.

Procurando algo?

Utilize o formulário abaixo para pesquisar no site:

Ainda não encontrou o que você está procurando? Deixe um comentário sobre um post ou entre em contato para que possamos providenciar!