Click here to Skip to main content
Licence CPOL
First Posted 27 Jan 2009
Views 48,043
Bookmarked 13 times

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

By | 27 Jan 2009 | Article
Difference between Int32.Parse(), Convert.ToInt32(), and Int32.TryParse()

Introduction

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. For 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. For 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. For 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.

History

  • 27th January, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

AgileWare

Software Developer
AgileWare
Brazil Brazil

Member

SoftWare Developer.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
SuggestionNice Work AgilWare PinmemberThilina Chandima3:30 26 Mar '12  
GeneralRe: Nice Work AgilWare PinmvpMark Nischalke16:08 27 Mar '12  
GeneralDifference between int.parse(), int.Tryparse() and Convert.ToInt32() PinmemberMember 333565311:43 15 May '10  
GeneralGood Article PinmemberMember 33356538:35 30 Apr '10  
GeneralMy vote of 2 PinmemberAmit Narula5:39 30 Nov '09  
GeneralMy vote of 2 PinmemberStinky Boat13:20 18 Nov '09  
GeneralExceptions are not necessarily bad PinmemberOmer Mor6:22 28 Jan '09  
GeneralMy vote of 2 PinmemberOmer Mor6:16 28 Jan '09  
GeneralUmm... PinmemberPIEBALDconsult12:58 27 Jan '09  
GeneralSome comments PinmvpColin Angus Mackay6:27 27 Jan '09  
GeneralRe: Some comments Pinmembersupercat98:05 27 Jan '09  
GeneralRe: Some comments [modified] PinmvpColin Angus Mackay8:30 27 Jan '09  
supercat9 wrote:
I don't see an advantage to having one that throws an exception in every invalid case except when the input parameter is a null reference (note that Convert.ToInt32 will throw an exception on an empty string).

 
You now appear to be contradicting yourself. You said in the article "Convert.ToInt32 is better than Int32.Parse, since it return 0 rather than exception".

 

supercat9 wrote:
Val and CInt. These are willing to accept more input formats than the other methods

 
But you can also get that out of Int32.TryParse[^] Int32.Parse[^] Convert.ToInt32[^].
 
You still have not answered why it is better that no exception is thrown?
 
* Developer Day Scotland 2 - Free community conference
* The Blog of Colin Angus Mackay


Vogon Building and Loan advise that your planet is at risk if you do not keep up repayments on any mortgage secured upon it. Please remember that the force of gravity can go up as well as down.
modified on Tuesday, January 27, 2009 5:27 PM

GeneralRe: Some comments Pinmembersupercat99:26 27 Jan '09  
GeneralRe: Some comments PinmvpColin Angus Mackay11:27 27 Jan '09  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120604.1 | Last Updated 27 Jan 2009
Article Copyright 2009 by AgileWare
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid