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
public static int ToInt32(string value)
{
if (value == null)
{
return 0;
}
return int.Parse(value, CultureInfo.CurrentCulture);
}
Int32.Parse
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…


dezembro 10th, 2007 on 23:33
Saindo pouco do assunto do post: por que não compareceu ao encontro informal de blogueiros Caique?
dezembro 11th, 2007 on 11:01
Grande Tiago! tudo certo?
Confesso que não estava totalmente a par do tema, acabei lendo somente sobre o encontro 0. Na próxima com estarei presente com certeza.
Abraço!