Difference between 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 a 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.

Example:
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 

Convert.ToInt32(string)

Convert.ToInt32(string s) method converts the specified string representation of 32-bit signed integer equivalent. This calls in turn Int32.Parse () method.
·         When s is a 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.

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

Int32.TryParse(string, out int)

Int32.Parse(string, out int) method converts the specified string representation of 32-bit signed integer equivalent to out variable, and returns true if it is parsed successfully, false otherwise. This method is available in C# 2.0.
·         When s is a null reference, it will return 0 rather than throw ArgumentNullException.
·         If s is other than an 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.

Example:
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
 
Convert.ToInt32 is better than Int32.Parse since it returns 0 rather than an exception. But again, according to the requirement, this can be used.
TryParse will be the best since it always handles exceptions by itself.

No comments:

Post a Comment