Escolar Documentos
Profissional Documentos
Cultura Documentos
C#
Adicionar a Meu favorito
Quinta Feira, 21 de Agosto de 2008
Convert.ToInt32 vs Int32.Parse
Olá Pessoal, como vão as coisas?
Então, dei uma lida na documentação e vi que há uma diferença simples entre estes dois
métodos.
1. string s1 = "1234";
2. string s2 = "1234.65";
3. string s3 = null;
4. string s4 = "1234567891234567891123456789123456789";
Convert.ToInt32(string)
1. int result;
2. result = Convert.ToInt32(s1); //-- 1234
3. result = Convert.ToInt32(s2); //-- FormatException
4. result = Convert.ToInt32(s3); //-- 0
5. result = Convert.ToInt32(s4); //-- OverflowException
Int32.Parse(string)
Mesma ação do Convert.ToInt32, mas temos uma pequena diferença. Veja na execução
da conversão de nossas strings:
1. int result;
2. result = Int32.Parse(s1); //-- 1234
3. result = Int32.Parse(s2); //-- FormatException
4. result = Int32.Parse(s3); //-- ArgumentNullException
5. result = Int32.Parse(s4); //-- OverflowException
A única diferença entre as duas formas de converter, é que se eu passar uma string nula,
o Convert.ToInt32 vai retornar o valor inteiro 0, mas o Int32.Parse vai gerar uma
excessão do tipo ArgumentNullException.
Isto é bom e últil em alguns casos que precisamos obrigar o usuário a enviar um número
inteiro e se ele tentar string, por segurança (mesmo não sendo uma ação recomendada),
o sistema gerar uma excessão pra ele.
O bom é que não é gerado nenhuma excessão e podemos tratar facilmente este erro com
um simples IF.
É isso pessoal.
Até a próxima.