Header Ads

Difference among Int32.Parse(), Convert.ToInt32(), and Int32.TryParse()

Int32.parse(string)

* Int32.Parse (string s) method converts the string representation of a number to its 32-bit signed integer equivalent.
* When s is null reference, it will throw ArgumentNullException.
* If s is other than integer value, it will throw FormatException.
* When s represents a number less than MinValue or greater than MaxValue, it will throw OverflowException.

Convert.ToInt32(string)

* Convert.ToInt32(string s) method converts the specified the string representation of 32-bit signed integer equivalent. This calls in turn Int32.Parse () method.
* When s is null reference, it will return 0 rather than throw ArgumentNullException
* If s is other than integer value, it will throw FormatException.
* When s represents a number less than MinValue or greater than MaxValue, it will throw OverflowException

Int32.TryParse(string, out int)

* Int32.Parse(string, out int) method converts the specified the string representation of 32-bit signed integer equivalent to out variable, and returns true if it parsed successfully, false otherwise. This method is available in C# 2.0
* When s is null reference, it will return 0 rather than throw ArgumentNullException.
* If s is other than integer value, the out variable will have 0 rather than FormatException.
* When s represents a number less than MinValue or greater than MaxValue, the out variable will have 0 rather than OverflowException.

Convert.ToInt32 is better than Int32.Parse, since it return 0 rather than exception. But, again according to the requirement this can be used. TryParse will be best since it handles exception itself always.

Demo:

string s1 = "1234";
string s2 = "1234.65";
string s3 = null;
string s4 = "123456789123456789123456789123456789123456789";

int result;
bool success;

result = Int32.Parse(s1); //-- 1234
result = Int32.Parse(s2); //-- FormatException
result = Int32.Parse(s3); //-- ArgumentNullException
result = Int32.Parse(s4); //-- OverflowException

result = Convert.ToInt32(s1); //-- 1234
result = Convert.ToInt32(s2); //-- FormatException
result = Convert.ToInt32(s3); //-- 0
result = Convert.ToInt32(s4); //-- OverflowException

success = Int32.TryParse(s1, out result); //-- success => true; result => 1234
success = Int32.TryParse(s2, out result); //-- success => false; result => 0
success = Int32.TryParse(s3, out result); //-- success => false; result => 0
success = Int32.TryParse(s4, out result); //-- success => false; result => 0

Functional Comparison:

Int32.Parse:

try
{
result = Int32.Parse(s);
}
catch (FormatException formatEx) { result = 0; }
catch (ArgumentNullException argEx) { result = 0; }
catch (OverflowException overflowEx) { result = 0; }

Convert.ToInt32()

try
{
result = Convert.ToInt32(s);
}
catch (FormatException formatEx) { result = 0; }
catch (OverflowException overflowEx) { result = 0; }

Int32.Parse()

if (Int32.TryParse(s1, out result))
{
Response.Write(result);
}

No comments:


Powered by Blogger.