Convert a string which might be a number to an int

T

Tony

Hello!

It seems to me that both Int32.Parse(..) and Convert.ToInt32(...) static
methods works in exactly the same way.
Both can throw an exeption.

So is it any different at all between these two ?

string input1 = Console.ReadLine();
string input2 = Console.ReadLine();

try
{
int number1 = Convert.ToInt32(input1);
int number2 = int32.Parse(input2);
}
catch
{...}

//Tony
 
M

Micha³ Piaskowski

one difference I know of is:

Convert.ToInt32(null) // returns 0
Int32.Parse(null) // throws exceprion.
 
J

Jon Skeet [C# MVP]

Tony said:
It seems to me that both Int32.Parse(..) and Convert.ToInt32(...) static
methods works in exactly the same way.

Not quite. Convert.ToInt32((string)null) will return 0. int.Parse(null)
will throw an exception.
Both can throw an exeption.

So is it any different at all between these two ?

string input1 = Console.ReadLine();
string input2 = Console.ReadLine();

try
{
int number1 = Convert.ToInt32(input1);
int number2 = int32.Parse(input2);
}
catch
{...}

See above (beyond the fact that you mean int.Parse or Int32.Parse) -
but in this case the better solution would be to use int.TryParse.
 
T

Tony

Hello!

Yes TryParse seems to be better but just for curiosity does anyone have an
answer to my question.
//Tony
 
Q

qglyirnyfgfo

The internal implementation of Convert.ToInt32() is shown below:

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

Bob Powell [MVP]

Ok, well, the difference is that one returns zero (ConvertTo) and the other
throws an exception.
The problem is that if you really want to know if the string was in the
correct format then you need to catch an exception which to be honest is a
bad technique. Exceptions should be, well, the exception, rather than the
rule.
ConvertTo returns zero in the case of an error which is bad because every
mathemetician will scream that zero is a real number and is valid on it's
own.

Therefore, for best practices, TryParse satisfies the criteria of decoding
the value as well as discovering whether the string was a perfectly valid
zero or just some gibberish.


--
--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top